在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;
答案 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)))并使用您的函数进行查询。