我有一些应用程序使用的以下过程:
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:作为临时解决方案,我正在使用立即执行
答案 0 :(得分:28)
如果您的错误保持不变,请更改为
...
exception when others then
log_error(sqlcode, sqlerrm);
raise;
end;
/
这解释为in the documentation。