我在函数'public.main_function'中使用postgrest异常。在'others'例外,我还使用子函数来保存我的日志数据。
但我的子函数'public.something_went_wrong_log_creation'有时可能会出错。
如何在下面的“其他”异常中添加异常(嵌套异常)?
CREATE OR REPLACE FUNCTION public.main_function(request json)
RETURNS integer AS
$BODY$
BEGIN
-- statement 1
-- statement 2
-- statement 3
RETURN 1;
EXCEPTION
-- SOMETHING WENT WRONG
WHEN others
THEN
-- LOG SOMETHING WENT WRONG
PERFORM public.something_went_wrong_log_creation();
RETURN 0;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
CREATE OR REPLACE FUNCTION public.something_went_wrong_log_creation()
RETURNS integer AS
$BODY$
BEGIN
-- statement 1
-- statement 2
-- statement 3
RETURN 1;
EXCEPTION
-- SOMETHING WENT WRONG
WHEN others
THEN
RETURN 0;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
您可以使用子块并将异常处理代码包装在其中。
CREATE OR REPLACE FUNCTION public.main_function(request json)
RETURNS integer AS
$BODY$
BEGIN
-- statement 1
-- statement 2
-- statement 3
RETURN 1;
EXCEPTION
-- SOMETHING WENT WRONG
WHEN others
THEN
BEGIN
-- LOG SOMETHING WENT WRONG
PERFORM public.something_went_wrong_log_creation();
RETURN 0;
EXCEPTION
WHEN others
THEN
RETURN -1;
END;
END;
$BODY$
LANGUAGE plpgsql VOLATILE