Дополнительная информация (к тому, что Барбарос уже сказал вам).
Исключение INVALID_NUMBER (ORA-01722) возникает в операторе SQL, когда преобразование символьной строки в число завершается неудачно, потому чтоСтрока не представляет действительное число. (В процедурных инструкциях VALUE_ERROR повышается.) Это исключение также возникает, когда выражение предложения LIMIT в массовом операторе FETCH не оценивается как положительное число.
Сравнить
SQL> select 'a'/2 from dual;
select 'a'/2 from dual
*
ERROR at line 1:
ORA-01722: invalid number
с
SQL> declare
2 l_num number;
3 begin
4 l_num := 'a' / 2;
5 end;
6 /
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 4
с
SQL> declare
2 l_num number;
3 begin
4 select 'a' / 2 into l_num from dual;
5 end;
6 /
declare
*
ERROR at line 1:
ORA-01722: invalid number
ORA-06512: at line 4
Разве это не мило с Oracle?Более или менее одно и то же, но другой ответ.