PLSQL獲取異常堆疊資訊-dbms_utility.format_error_backtrace
建立一個表,插入一條記錄:
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
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
參考:http://www.cnblogs.com/advocate/archive/2010/04/28/1722837.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8520577/viewspace-1088970/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JVM異常不列印堆疊資訊 [ -XX:-OmitStackTraceInFastThrow ]JVMMITAST
- Java獲取堆疊資訊的3種方法Java
- PLSQL宣告部分異常捕獲SQL
- Android-獲取app包資訊異常AndroidAPP
- 【CORE】在UNIX環境下從核心檔案獲取堆疊資訊
- 怎樣在程式中獲取所有執行緒的堆疊資訊?執行緒
- 獲取異常資訊裡再出異常就找不到日誌了,我TM人傻了
- 儲存過程——異常捕獲&列印異常資訊儲存過程
- plsql異常處理SQL
- 使用log4j列印異常堆疊到日誌檔案
- PLSQL學習-【6異常】SQL
- android I/DEBUG堆疊資訊Android
- 如何在Python中保留異常裝飾器的堆疊跟蹤Python
- RxJava 異常時堆疊顯示不正確?解決方法都在這裡RxJava
- 獲取input框輸入值異常
- CircuitBreaker斷路器Fallback如何獲取異常UI
- 在SpringBoot中使用logback優化異常堆疊的輸出Spring Boot優化
- Auto.js Pro 資料獲取 與 異常捕獲JS
- android 解碼混淆過的堆疊資訊Android
- Go 錯誤堆疊資訊之 CockroachDB errors 庫GoError
- JS 堆疊JS
- java堆疊Java
- 堆疊圖
- 平衡堆疊
- 使用Error Stack跟蹤Oracle錯誤堆疊資訊ErrorOracle
- 捕獲 React 異常React
- iOS異常捕獲iOS
- springboot利用快取儲存物件從新獲取異常Spring Boot快取物件
- 使用DbgHelp獲取函式呼叫堆疊之inline assembly(內聯彙編)法函式inline
- pretty-printers:更優雅的看GDB堆疊資訊
- iOS Crash 捕獲及堆疊符號化思路剖析iOS符號
- 圖的深度優先遍歷[非堆疊、堆疊實現]
- 巧用Grafana和Arthas自動抓取K8S中異常Java程式的執行緒堆疊GrafanaK8SJava執行緒
- python異常捕獲Python
- 與 AI 互動 - 學習如何看呼叫鏈堆疊資訊AI
- 記憶體堆疊記憶體
- 堆疊的工作原理
- C#堆疊(Stack)C#