是否有一种方法可以将异常传递到一个过程中,以便在执行了一些处理异常的操作之后调用“raise”。这样外部代码块就可以获得所引发的准确异常
大概是这样的:
begin
...
exception
when others then
error_handler( err );
end;
procedure error_handler ( err ) is
begin
/*
here some code to handle and log the exception...
*/
raise err;
end;
或者唯一的方法是将SQLCODE和SQLERRM传递到过程中,然后调用raise_application_error(SQLCODE,SQLERRM)?
1条答案
按热度按时间s5a0g9ez1#
如果我没理解错的话,这就是你要问的。
示例日志表:
日志记录过程应该是一个自治的事务,这样你就可以在其中
commit
,而不影响主事务。另一个过程(您正在记录其执行);它将引发 division by zero。请参见第8行和第9行,它们调用日志记录过程,然后重新引发错误:
好了,一切都准备好了。我们来试试:
日志表内容:
你问,随便:
如何将异常传递到过程中?
就我所知,你不能: