2014-12-04 38 views
2

我正在编写一个包含多个过程的PLSQL包,其中任何一个都可以生成我定义的异常,并且我处理了异常每个程序。从而;有没有办法在PLSQL包中处理全局定义的异常

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

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

它的工作原理。

但是,有没有什么办法来定义异常处理程序,它会在包中的ANY过程中引发“foobar”,因此每个过程不需要仅用于处理foobar条件的异常部分?实际的代码有大约十几个程序。

+5

不,除非你添加一个“中心”的过程充当每个过程调用的顶部的接收层。 – Sebas 2014-12-04 23:50:18

+0

我希望,但是这比价值更多的工作。谢谢你,Sebas。 – 2014-12-05 04:35:46

+0

无论如何,只要做你正在做的事情可能是好的。什么是真实世界的场景? – Sebas 2014-12-05 05:15:23

回答

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; 
相关问题