10
我有以下程序所使用的一些应用程序:如何在异常处理块中重新引发pl/sql异常?
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:作为临时的解决方案,我用执行即时
@AlexPoole链接已死。 – ceving 2014-10-16 14:52:28
@ceving - 谢谢,我将当前的实时链接放入了答案中,而不是将来更容易更新。 – 2014-10-16 15:08:27
当前[link](http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/07_errs.htm#1049) – 2015-03-13 21:41:30