在 plpgsql 异常块中调用函数

Calling a function in plpgsql exception block

是否可以从 WHEN OTHERS THEN 块中调用函数?

类似于:

EXCEPTION
    WHEN OTHERS THEN
        my_fnc('a key ID', 'Custome message', SQLERRM||' - '||SQLSTATE);

你一定可以:

t=# do $$ begin
perform 1/0;
exception when others then perform to_json(SQLERRM||' - '||SQLSTATE);
end;
$$;
DO

但是仅仅调用 fn() 是没有意义的,除非它执行一些实际操作,所以 ritcher 示例:

t=# do $$ begin
perform 1/0;
exception when others then raise info '%', to_json(SQLERRM||' - '||SQLSTATE);
end;
$$;
INFO:  "division by zero - 22012"
DO