有没有办法在PLSQL包中全局处理已定义的异常

时间:2014-12-04 23:46:44

标签: exception plsql

我正在编写一个包含多个过程的PLSQL包,其中任何一个过程都可以生成我定义的异常,并且我在每个过程中都处理了异常。因此;

package BODY pkg 
  PROCEDURE first
  BEGIN
  .....
  EXCEPTION
    WHEN foobar ...
  END first;

  PROCEDURE second
  BEGIN
  .....
  EXCEPTION
    WHEN foobar ...
  END second;
END pkg;

它有效。

但是,有没有办法定义一个异常处理程序,当它在包内的任何一个过程中引发时会处理“foobar”,所以每个过程都不​​需要一个异常部分来处理foobar条件?实际代码有大约十几个程序。

1 个答案:

答案 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;