【问题标题】:Exception Handling in PL/SQL. [closed]PL/SQL 中的异常处理。 [关闭]
【发布时间】:2013-02-27 17:49:36
【问题描述】:

谁能解释一下为什么下面代码中的答案是“Inside OTHERS”而不是“ORA -20002 5 大于 3”

BEGIN
IF 5>3 THEN
    RAISE_APPLICATION_ERROR (-20002, ‘5 is greater than 3’);
END IF;
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE(‘Inside OTHERS’);
END;

答案:在 OTHERS 内部

【问题讨论】:

    标签: oracle exception-handling plsql


    【解决方案1】:

    因为您正在捕获引发的异常并在控制台中打印消息“Inside OTHERS”。

    我认为你需要这样的东西:

    DECLARE
       comparison_error exception;
       PRAGMA EXCEPTION_INIT(comparison_error, -20002);
    BEGIN
    IF 5>3 THEN
        RAISE_APPLICATION_ERROR (comparison_error, '5 is greater than 3');
    END IF;
    EXCEPTION
        WHEN comparison_error THEN
            DBMS_OUTPUT.PUT_LINE('SQLERRM: ' || SQLERRM);
        WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE('Inside OTHERS');
    END;
    

    【讨论】:

    • 感谢您的回答。 :)
    【解决方案2】:

    试试这个:

    BEGIN
    IF 5>3 THEN
    RAISE_APPLICATION_ERROR (-20002, '5 is greater than 3');
    END IF;
    EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE(sqlerrm);
        DBMS_OUTPUT.PUT_LINE('Inside OTHERS');
    END;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      相关资源
      最近更新 更多