SHOW WARNINGS/ERRORS
功能描述
显示当前会话执行的sql,所产生的信息(包含errors, warnings, notes)。
注意事项
- 该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。
- GUC参数sql_note,用于设置
show warnings
是否显示Note级别的信息。
语法格式
SHOW WARNINGS [LIMIT [offset,] row_count]
SHOW COUNT(*) WARNINGS
SHOW ERRORS [LIMIT [offset,] row_count]
SHOW COUNT(*) ERRORS
返回结果集
字段名 | 类型 | 说明 |
---|---|---|
Level | 字符类型 | 信息的级别(Note/Warning/Error)。 |
Code | 整数类型 | 信息状态对应的错误码。 |
Message | 字符类型 | 信息内容。 |
Code字段是信息的错误码。其数字含义对应ERRCODE中的宏定义。其中各种信息的状态宏都是由MAKE_SQLSTATE(ch1, ch2, ch3, ch4, ch5)生成。
MAKE_SQLSTATE作用是把字符 ch1 ~ ch5 的ascii码减去'0',再取其二进制的后六位得到 res1 ~ res5,然后把这5个数据从低到高位组成一个30位二进制结果(res5res4res3res2res1),转换成一个十进制数字,即就是错误码的数字。不同的错误码数字对应不同的状态宏。
参数说明
row_count
输出上条sql,生成的warnings/errors信息的行数限制。
offset
从第几行信息开始显示。
示例
示例1:SHOW WARNINGS
语句的使用。
1、查看sql_note。
show sql_note;
返回结果为:
sql_note
----------
on
(1 row)
2、创建测试表。
create table test(id int, name varchar default 11);
3、再次创建测试表。
create table test(id int, name varchar default 11);
返回结果为:
ERROR: relation "test" already exists in schema "public"
DETAIL: creating new table with existing name in the same schema
4、查看当前会话中的执行语句所导致的状况信息。
show warnings limit 1;
返回结果为:
level | code | message
-------+-----------+---------------------------------------------------
Error | 117571716 | relation "test" already exists in schema "public"
(1 row)
5、显示当前会话错误,警告或注意信息的数量。
show count(*) warnings;
返回结果为:
count
-------
1
(1 row)
示例2: 用sql_note控制存储note信息的开关。
1、创建函数。
CREATE OR REPLACE FUNCTION TEST_FUNC(tempdata char) RETURNS VOID AS $$
BEGIN
raise info'TEST CHAR VALUE IS %',tempdata;
END;
$$ LANGUAGE plpgsql;
select TEST_FUNC('abc'::clob);
返回结果为:
INFO: TEST CHAR VALUE IS abc
CONTEXT: referenced column: test_func
test_func
-----------
(1 row)
2、查询当前会话语句的状况信息。
show warnings;
返回结果为:
level | code | message
-------+------+------------------------
Note | 0 | TEST CHAR VALUE IS abc
(1 row)
3、设置sql_note=false;
关闭note级别的信息显示。
set sql_note=false;
4、调用函数。
select TEST_FUNC('abc'::clob);
返回结果为:
INFO: TEST CHAR VALUE IS abc
CONTEXT: referenced column: test_func
test_func
-----------
(1 row)
5、再次执行show warnings;
语句。
show warnings;
返回结果为:
level | code | message
-------+------+---------
(0 rows)