调试

    图 1 raise_format::=

    图 2 raise_condition::=
    调试 - 图2

    图 3 raise_sqlstate::=

    图 4 raise_option::=
    调试 - 图4

    图 5 raise::=

    • level选项用于指定错误级别,有DEBUG,LOG,INFO,NOTICE,WARNING以及EXCEPTION(默认值)。EXCEPTION抛出一个正常终止当前事务的异常,其他的仅产生不同异常级别的信息。特殊级别的错误信息是否报告到客户端、写到服务器日志由log_min_messages和这两个配置参数控制。
    • option = expression:向错误报告中添加另外的信息。关键字option可以是MESSAGE、DETAIL、HINT以及ERRCODE,并且每一个expression可以是任意的字符串。

      • MESSAGE,指定错误消息文本,这个选项不能用于在USING前包含一个格式字符串的RAISE语句中。
      • DETAIL,说明错误的详细信息。
      • ERRCODE,向报告中指定错误码(SQLSTATE)。可以使用条件名称或者直接用五位字符的SQLSTATE错误码。
    • condition_name:错误码对应的条件名。

    • sqlstate:错误码。

    如果在RAISE EXCEPTION命令中既没有指定条件名也没有指定SQLSTATE,默认用RAISE EXCEPTION (P0001)。如果没有指定消息文本,默认用条件名或者SQLSTATE作为消息文本。

    示例

    终止事务时,给出错误和提示信息:

    两种设置SQLSTATE的方式:

    如果主要的参数是条件名或者是SQLSTATE,可以使用:

    RAISE division_by_zero;

    RAISE SQLSTATE ‘22012’;

    或者另一种方式: