2013-02-27 32 views
1

誰能請解釋我爲什麼在下面的代碼的答案是 「內部OTHERS」 不 「ORA -20002 5大於3」PL/SQL中的異常處理。

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

回答

4

因爲您正在捕獲引發的異常並在控制檯中輸入消息「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; 
+0

謝謝您的回答。 :) – Vikram 2013-02-27 18:25:13

0

試試這個:

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;