【问题标题】:Get error message from error code - PostgreSQL从错误代码中获取错误消息 - PostgreSQL
【发布时间】:2019-06-14 17:44:07
【问题描述】:

在 Postgresql 中有一种方法可以从错误代码中获取错误消息/描述:

https://github.com/postgres/postgres/blob/master/src/backend/utils/errcodes.txt

我需要它是自动化的,一个功能就可以了,像这样:

CREATE OR REPLACE FUNCTION ErrorMessage(IN Code char(5))
returns varchar(100)
AS $BODY$
begin
  return ????;
end;
$BODY$ LANGUAGE PLPGSQL;

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    我认为您正在寻找的内容在这里:https://www.postgresql.org/docs/11/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING

    因此,如果您想了解有关错误的详细信息,您可以按如下方式处理您的交易:

    DECLARE
      text_var1 text;
      text_var2 text;
      text_var3 text;
    BEGIN
      -- some processing which might cause an exception
      ...
    EXCEPTION WHEN OTHERS THEN
      GET STACKED DIAGNOSTICS text_var1 = MESSAGE_TEXT,
                              text_var2 = PG_EXCEPTION_DETAIL,
                              text_var3 = PG_EXCEPTION_HINT;
    END;
    

    但是如果您仍然希望根据错误代码(https://www.postgresql.org/docs/current/errcodes-appendix.html)获得相应的错误名称,那么您可以构建一个包含所有信息的表(PG_ERROR_CODES(id varchar(64),description varchar(255) ))) 并用你的函数询问它。

    【讨论】:

    • 是的,我想这样做,但这个解决方案的问题是,当列表更改或添加一些新错误时(可能在新版本中),我也必须将新消息添加到我的列表中...
    • 为什么需要这样的功能?也许有一种符合 PGSQL 理念的解决方法。
    • 我正在从另一个数据库转换代码,我总是检查最后一个错误,但 PostgreSQL 中没有最后一个错误
    • 如果有办法获得对我来说很棒的最后一个 SQLSTATE
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多