postgresql 函数错误捕捉

CREATE OR REPLACE FUNCTION xx
RETURNS "public"."xx" AS $BODY$
DECLARE
err_message varchar(4000);
exception_context varchar(4000);
BEGIN
IF strDate is null then
strDate := (now()::DATE-interval '1 day');
END IF;

result.strErrorDescribe='数据录入成功'||strDate;
result.ReturnValue=0;
RETURN result;
EXCEPTION
WHEN OTHERS THEN
BEGIN
-- get stacked diagnostics exception_context=PG_EXCEPTION_CONTEXT; --获取错误的行号
--err_message := '错误行号:' || exception_context || '; 异常:' || sqlerrm;

--insert into proc_err_log values(err_message);
result.strErrorDescribe='数据异常已经回滚'; --获取异常信息
result.ReturnValue=9999;
RETURN result;
END;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100

 

 
posted @ 2023-04-17 16:49  ''Crazy  阅读(313)  评论(0)    收藏  举报