我正在编写一个包含多个过程的PLSQL包,其中任何一个过程都可以生成我定义的异常,并且我在每个过程中都处理了异常。因此;
package BODY pkg
PROCEDURE first
BEGIN
.....
EXCEPTION
WHEN foobar ...
END first;
PROCEDURE second
BEGIN
.....
EXCEPTION
WHEN foobar ...
END second;
END pkg;
它有效。
但是,有没有办法定义一个异常处理程序,当它在包内的任何一个过程中引发时会处理“foobar”,所以每个过程都不需要一个异常部分来处理foobar条件?实际代码有大约十几个程序。
答案 0 :(得分:1)
我会将公共代码移动到单个例程中,例如:
package BODY pkg
PROCEDURE foobar_handler IS
BEGIN
.....
END foobar_handler;
PROCEDURE first
BEGIN
.....
EXCEPTION
WHEN foobar THEN foobar_handler;
END first;
PROCEDURE second
BEGIN
.....
EXCEPTION
WHEN foobar THEN foobar_handler;
END second;
END pkg;