从错误代码获取错误消息-PostgreSQL

时间:2019-06-14 09:25:28

标签: postgresql

在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;

1 个答案:

答案 0 :(得分:2)

我认为您要寻找的是这里: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)))并使用您的函数进行查询。