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

如何在Oracle APEX中提取raise_application_error的纯错误信息

解决Oracle APEX中仅显示raise_application_error纯错误信息的方法

方法一:全局应用级错误处理(推荐)

在APEX应用中统一处理所有自定义ORA-20xxx错误:

  1. 进入应用的共享组件 → 错误处理
  2. 新建或编辑错误处理规则,设置错误代码范围为 -20999 到 -20000
  3. 选择错误处理类型为「PL/SQL代码」,粘贴以下代码:
DECLARE
    l_error_msg VARCHAR2(4000);
BEGIN
    l_error_msg := REGEXP_REPLACE(SQLERRM, 'ORA-\d+:\s*''?(.*)''?', '\1');
    apex_error.add_error(
        p_message => l_error_msg,
        p_display_location => apex_error.c_inline_in_notification
    );
    apex_error.handle_error;
END;

这段代码会自动去掉ORA错误码前缀,只保留纯错误信息并在页面内通知显示。

方法二:页面级PL/SQL处理中捕获错误

如果只需要在特定页面处理错误,可在调用API的PL/SQL块中添加异常捕获:

BEGIN
    -- 调用你的业务API
    your_api.your_procedure(p_param1 => :P1_PARAM, ...);
EXCEPTION
    WHEN OTHERS THEN
        IF SQLCODE BETWEEN -20999 AND -20000 THEN
            apex_error.add_error(
                p_message => REGEXP_REPLACE(SQLERRM, 'ORA-\d+:\s*''?(.*)''?', '\1'),
                p_display_location => apex_error.c_inline_in_notification
            );
        ELSE
            -- 非自定义错误按默认逻辑抛出
            RAISE;
        END IF;
END;

关键说明

REGEXP_REPLACE 函数会匹配「ORA-数字:」开头的前缀,提取后续的纯错误内容,不管原信息是否带单引号都能正确处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:12:08