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

PLSQL中如何去除错误代码仅打印错误信息

PL/SQL 实现仅输出错误信息(去除错误代码编号)

需求为捕获异常后仅保留错误信息文本,去除开头的ORA-格式错误代码编号。现有PL/SQL代码存在语法及功能缺陷,以下是修正方案:

原代码

BEGIN

IF :MY_TEXT is null THEN 
   raise_application_error(-20001,'Text field cannot be empty')
END IF;

Exception 
     when others then
             :MSG := replace(SQLERRM,'^ORA-+:','');

 
END;

问题分析

  • raise_application_error语句末尾缺少分号,存在语法错误
  • PL/SQL的replace函数不支持正则表达式,无法精准匹配并去除ORA-XXXX:格式的错误代码前缀

修正后的代码

BEGIN
    IF :MY_TEXT IS NULL THEN 
        raise_application_error(-20001, 'Text field cannot be empty');
    END IF;
EXCEPTION 
    WHEN OTHERS THEN
        :MSG := regexp_replace(SQLERRM, '^ORA-\d+:\s*', '');
END;

修正说明

  1. 补全raise_application_error语句末尾的分号,修复语法错误
  2. 使用regexp_replace替代replace,通过正则表达式^ORA-\d+:\s*匹配并移除错误代码前缀:
    • ^ORA-\d+: 匹配以ORA-开头、后跟数字和冒号的错误代码部分
    • \s* 匹配前缀后的任意空格,确保错误信息文本无多余前置空格

预期效果

当:MY_TEXT为空时,:MSG将被赋值为Text field cannot be empty,仅保留纯错误信息文本,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:45:34