Если вы используете SQL * Plus (как я подозреваю из приведенного сообщения об ошибке), то перед выполнением оператора merge
выполните
variable a number
exec :a := 5
.
С другой стороны, если вы выполняете оператор в PL / SQL, нет необходимости использовать двоеточие, вместо этого просто поместите вместо него имя переменной:
procedure do_the_merge(a in number) is
begin
merge....
....
where e2.empno = a
....;
end do_the_merge;