У меня есть следующая процедура, которая используется некоторыми приложениями:
procedure p1
is
begin
bla bla bla;
end;
Но блок обработки исключений отсутствует. Таким образом, приложения были написаны в соответствии с этой функцией.
Теперь мне нужно записывать ошибки в p1. Но это не должно влиять на приложения, которые используют эту процедуру.
Что-то вроде этого:
procedure p1
is
begin
bla bla bla;
exception when others then
log_error(sqlcode, sqlerrm);
raise_new_exception (sqlcode, sqlerrm);
end;
В случае raise_application_error первый параметр должен находиться в диапазоне [-20000, -20999]. Поэтому, если возникает исключение no_data_found, он не может поднять эту ошибку.
В случае exception_init второй параметр не должен быть переменным. Это должен быть числовой литерал.
PS: Как временное решение, я использую выполнить немедленный