【问题标题】: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;