【问题标题】:Is there any way to handle a defined exception globally in a PLSQL package有没有办法在 PLSQL 包中全局处理定义的异常
【发布时间】:2014-12-04 23:46:43
【问题描述】:

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

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

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

而且它有效。

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

【问题讨论】:

  • 否,除非您在每个过程调用之上添加另一个“集线器”过程作为接收层。
  • 我希望如此,但这比工作更有价值。谢谢你,塞巴斯。
  • 不管怎样,做你正在做的事情可能没问题。现实世界的场景是什么?
  • 我不认为有这样的事情。也许您可以将引发该异常的逻辑封装在一个过程中,并始终从其他过程中调用该过程...

标签: exception plsql


【解决方案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;

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2015-07-11
    相关资源
    最近更新 更多