Quoted from an article by Paul Dirksen:
Bind parameters are used to substitute one value at runtime for evaluation and are identified by a preceding ‘:’. An example of a bind parameter in a select statement is provided below, where :P_EMP is the bind parameter reference.
select *
from emp
where emp.name = :P_EMP;
Lexical parameters are used to substitute multiple values at runtime and are identified by a preceding ‘&’. Lexicals can consist of as little a one line where clause to an entire select statement. An example of a lexical parameter usage in a select statement is below where &L_EMP is the lexical parameter reference.
select *
from emp
where &L_EMP;