更新时间:2026-10-21 GMT+08:00
获取有关错误的信息
可以通过使用GET STACKED DIAGNOSTICS语句,查询当前PL/SQL函数执行过程中的异常信息。
语法
GET STACKED DIAGNOSTICS {{variable { = | := } item }[ , ... ]}; 语法图如图1所示。
其中,item表示异常专用的诊断项,目前可用的诊断项包括:
- PG_EXCEPTION_DETAIL:详细错误信息。
- PG_EXCEPTION_HINT:错误提示。
- PG_EXCEPTION_CONTEXT:异常的调用栈信息。
- MESSAGE_TEXT:主要错误信息。
- RETURNED_SQLSTATE:异常的SQLSTATE错误代码。
示例
gaussdb=# CREATE TABLE diag_table(int_col int, str_col varchar2); CREATE TABLE gaussdb=# CREATE OR REPLACE PROCEDURE get_diag_proc() AS DECLARE sql_state text; message_text text; pg_exception_detail text; pg_exception_hint text; pg_exception_context text; BEGIN UPDATE diag_table set int_col = 'aaa'; EXCEPTION WHEN others THEN GET STACKED DIAGNOSTICS sql_state = returned_sqlstate; GET STACKED DIAGNOSTICS message_text = message_text; GET STACKED DIAGNOSTICS pg_exception_detail = pg_exception_detail; GET STACKED DIAGNOSTICS pg_exception_hint = pg_exception_hint; GET STACKED DIAGNOSTICS pg_exception_context = pg_exception_context; raise info 'sql_state: %, message_text: %', sql_state, message_text; END; / CREATE PROCEDURE gaussdb=# CALL get_diag_proc(); INFO: sql_state: 22P02, message_text: invalid input syntax for integer: "aaa" get_diag_proc --------------- (1 row) gaussdb=# DROP TABLE diag_table; DROP TABLE gaussdb=# DROP PROCEDURE get_diag_proc(); DROP PROCEDURE
父主题: 错误捕获语句
