You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PL/pgSQL中能否在WHEN OTHERS THEN块内调用函数?附示例

能否在PL/pgSQL的WHEN OTHERS THEN异常处理块中调用函数?

当然可以!在PL/pgSQL的WHEN OTHERS THEN异常处理块里调用自定义函数是完全合法的,而且这是一种很常见的实践——通常用来实现统一的异常日志记录、告警通知或者通用的异常清理逻辑。

你给出的示例代码就完全没问题:

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

这里把PL/pgSQL内置的错误信息变量SQLERRM(具体错误消息)和SQLSTATE(标准错误状态码)拼接后传给my_fnc,是非常典型的异常信息收集用法——通过自定义函数把异常详情统一处理,比如写入专门的日志表、发送运维告警等。

不过有个小提醒:要确保你调用的my_fnc本身不会抛出新的异常,否则可能会导致嵌套异常,增加问题排查的难度。如果函数内部存在可能出错的操作,建议在函数内部也做好异常处理,或者在调用时额外添加一层防护逻辑。

内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:18:31