# 获取有关错误的信息
可以通过使用GET STACKED DIAGNOSTICS语句，查询当前PL/SQL函数执行过程中的异常信息。
#### 语法
```
GET STACKED DIAGNOSTICS {{variable { = | := } item }[ , ... ]};
```
语法图如[图1]所示。
图1获取有关错误信息语法   
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002764469572.png "点击放大")
其中，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
```
