如何在异常处理块中重新引发pl / sql异常?

时间:2013-02-20 11:12:31

标签: oracle exception-handling plsql

我有一些应用程序使用的以下过程:

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:作为临时解决方案,我正在使用立即执行

1 个答案:

答案 0 :(得分:28)

如果您的错误保持不变,请更改为

...
exception when others then
  log_error(sqlcode, sqlerrm);
  raise;
end;
/

这解释为in the documentation