0

pl/sql には、内部の begin ブロック、end ブロック、および「Exception Others」ブロックがいくつかあります。内部ブロックからユーザー定義の例外をスローすると、内部の「Exception Others」ブロックではなく、最後の「Exception userdef」ブロックでこの例外をキャッチしたいだけです。何か案が?

4

2 に答える 2

0
/* package */
CREATE OR REPLACE PACKAGE exceptions_pkg AS
    user_defined_exception EXCEPTION;
END exceptions_pkg;

/* block */
DECLARE
    l_var1 NUMBER;
BEGIN
    DBMS_OUTPUT.PUT_LINE('one');

    DECLARE
        l_var2 NUMBER;
    BEGIN
        DBMS_OUTPUT.PUT_LINE('two');

        IF 1 < 2 THEN
            RAISE exceptions_pkg.user_defined_exception;
        END IF;

        DBMS_OUTPUT.PUT_LINE('three');
    END;

    DBMS_OUTPUT.PUT_LINE('four');
EXCEPTION
    WHEN exceptions_pkg.user_defined_exception THEN
        DBMS_OUTPUT.PUT_LINE('five');
END;

-- anonymous block completed
/*
one
two
five
*/
于 2013-06-14T14:38:07.810 に答える