Oracle PL/SQL DB Error Message 系統錯誤資訊

在 Oracle PL/SQL 中,

以前常用 SQLCODESQLERRM 抓取錯誤訊息, 如下範例 :
 程式碼
DECLARE
    V_NUM NUMBER;
BEGIN
    V_NUM := 'tomkuo139@gmail.com';
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE( '錯誤: ' || SQLCODE || ' ~ ' || SQLERRM );
END;

-- 結果顯示
錯誤: -6502 ~ ORA-06502: PL/SQL: 數字或值錯誤: 字元到數字轉換錯誤

而在 10g 以後的版本, 提供了
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE

DBMS_UTILITY.FORMAT_ERROR_STACK,

讓錯誤訊息也包括錯誤行號, 如下範例 :
 程式碼
DECLARE
    V_NUM NUMBER;
BEGIN
    V_NUM := 'tomkuo139@gmail.com';
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE( '錯誤: ' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || DBMS_UTILITY.FORMAT_ERROR_STACK );
END;

-- 結果顯示
錯誤: ORA-06512: 在 line 4
ORA-06502: PL/SQL: 數字或值錯誤: 字元到數字轉換錯誤

這樣, 當有錯誤時, 就能夠更快找到問題位置, 進行修正.


Related Posts Plugin for WordPress, Blogger...