VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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)