The scope of a variable is a region of a program unit where you can reference the variable.
All identifiers within the same scope must be unique.
declare v_amount_nr NUMBER; v_amount_nr BINARY_INTEGER; -- duplicate!!! begin ...
You should never use variable names that could match column names in the database.
In SQL statements, the names of database columns take precedence over the names of local variables and formal parameters:
declare ename VARCHAR2(10):='KING'; begin update emp set sal = sal * 10 where eName = eName; -- WRONG!!! end;
To fix this
declare v_eName_tx VARCHAR2(10):='KING'; begin update emp set sal = sal * 10 where eName = v_eName_tx; -- CORRECT! end;