postgresql嵌套异常可能吗?
is postgresql nested exception possible?
我在函数 'public.main_function' 中使用 postgrest 异常。在异常 'others' 中,我还使用子函数来保存我的日志数据。
但是我的子函数'public.something_went_wrong_log_creation'有时可能会出错。
如何在下面的异常 'others' 中添加异常(嵌套异常)?
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
我在函数 'public.main_function' 中使用 postgrest 异常。在异常 'others' 中,我还使用子函数来保存我的日志数据。
但是我的子函数'public.something_went_wrong_log_creation'有时可能会出错。
如何在下面的异常 'others' 中添加异常(嵌套异常)?
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