【发布时间】:2021-11-23 09:40:20
【问题描述】:
在 PL/pgSQL 函数中,我想捕获一个错误。例如,当我将文本转换为数字时,我得到一个错误(我在psql 中运行它,但在 Postico GUI 客户端中得到同样的错误):
select 'a'::numeric;
ERROR: invalid input syntax for type numeric: "a"
LINE 1: select 'a'::numeric;
^
对trap this error,我做了一个这样的例外子句:
CREATE OR REPLACE FUNCTION public.to_number(input text) RETURNS numeric
AS $$
BEGIN
RETURN input::numeric;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END
$$
LANGUAGE plpgsql
IMMUTABLE
RETURNS NULL ON NULL INPUT
;
但是,我不喜欢WHEN OTHERS这个条件。
如何将错误消息ERROR: invalid input syntax for type numeric: "a" 映射到Appendix A. PostgreSQL Error Codes 中提到的错误消息?
我想在转换为numeric时捕获转换错误,并且没有其他条件(因为上面的函数是一个简化的函数)。
我觉得我错过了什么,但是什么?
【问题讨论】:
标签: postgresql plpgsql