DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
說明:這是在Oracle 10g數據庫引入的,DBMS_UTILITY.FORMAT_ERROR_BACKTRACE內置函數返回一個格式化的字符串堆棧,堆棧中的程序及其行號可以回溯到錯誤被最先拋出的那一行。
范例:ORA-06512: at "DB.TEST", line 22
DBMS_UTILITY.FORMAT_ERROR_STACK
說明:這是在Oracle7中引入的,DBMS_UTILITY.FORMAT_ERROR_STACK 這個內置函數和SQLERRM一樣,返回的是和當前錯誤(SQLCODE返回的值)所關聯的錯誤信息。
范例:ORA-01476: divisor is equal to zero
DBMS_UTILITY.FORMAT_CALL_STACK
說明:這是在Oracle7中引入的,DBMS_UTILITY.FORMAT_CALL_STACK這個內置函數返回一個格式化的字符串,它顯示了執行調用堆棧:直至此函數的調用點處的所有過程或者函數的調用順序。換句話說,這個函數回答了這個問題:“我是怎么來到這里的?”
范例:
----- PL/SQL Call Stack -----
object line object
handle number name
00007FFA6A87CB30 31 function LTR.TEST_PAYMENT_LOGGING
00007FFA6A7C8268 3 anonymous block
SP 應用范例
create or replace procedure spTest(pId number, res out number) is begin /* SQL query */ commit; res := 1; exception when others then DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM); DBMS_OUTPUT.PUT_LINE('FORMAT_ERROR_BACKTRACE:' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE); DBMS_OUTPUT.PUT_LINE('FORMAT_ERROR_STACK:' || DBMS_UTILITY.FORMAT_ERROR_STACK); DBMS_OUTPUT.PUT_LINE('FORMAT_CALL_STACK:' || DBMS_UTILITY.FORMAT_CALL_STACK); rollback; res := 0; end;
SP 異常詳情
-1---ORA-00001: brott mot unik begransning (XXX.PK_YYY) FORMAT_ERROR_BACKTRACE:ORA-06512: vid "XXX.TB", rad 23 FORMAT_ERROR_STACK:ORA-00001: brott mot unik begransning (XXX.PK_YYY) FORMAT_CALL_STACK:----- PL/SQL Call Stack ----- object line object handle number name 00007FFCBF6193E8 57 procedure XXX.TB 00007FFCCC9ECC98 3 anonymous block
轉載來源
http://www.cnblogs.com/pompeii2008/p/7382640.html
