PLSQL獲取異常堆疊資訊-dbms_utility.format_error_backtrace

abstractcyj發表於2014-02-25
建立一個表,插入一條記錄:
create table test_error_stack(
 id number primary key
)

insert into test_error_stack select 1 from dual;
commit;

CREATE PROCEDURE proc_insert IS
BEGIN
  INSERT INTO test_error_stack
    SELECT 1 FROM dual;
END proc_insert;


呼叫這個過程的時候,會有ORA-00001異常丟擲。
呼叫這個過程,捕捉OTHERS異常。
BEGIN
  proc_insert;
EXCEPTION
  WHEN OTHERS THEN
    dbms_output.put_line(SQLCODE || ':' || SQLERRM);
    dbms_output.put_line(dbms_utility.format_error_backtrace);
    dbms_output.put_line(dbms_utility.format_error_stack);
END;


控制檯輸出:
-1:ORA-00001: unique constraint (SCOTT.SYS_C0012353) violated
ORA-06512: at "SCOTT.PROC_INSERT", line 2
ORA-06512: at line 2


ORA-00001: unique constraint (SCOTT.SYS_C0012353) violated

從中可以看出,dbms_utility.format_error_backtrace記錄了異常的具體的棧的資訊,顯示了異常的具體的傳遞過程,對於我們除錯PL/SQL程式碼來說是很有好處的

參考:http://www.cnblogs.com/advocate/archive/2010/04/28/1722837.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8520577/viewspace-1088970/,如需轉載,請註明出處,否則將追究法律責任。

相關文章