如何删除错误代码并只打印消息|PLSQL



我必须只打印错误消息并删除代码号

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;

预期输出:

Text filed cannot be empty

您需要使用类似的东西SUBSTR(MSG,INSTR(MSG(':',1,1(+2(

DECLARE
MY_TEXT VARCHAR2(100);
MSG VARCHAR2(100);
BEGIN
IF MY_TEXT is null THEN 
raise_application_error(-20001,'Text field cannot be empty');
END IF;
Exception 
when others then
MSG := SQLERRM ;
dbms_output.put_line( SUBSTR(MSG, INSTR(MSG, ':', 1, 1)+2 ) );

END;
/

您也可以将REPLACE调用更改为REGEXP_REPLACE,因为您似乎试图使用正则表达式来匹配错误:

:MSG := REGEXP_REPLACE(SQLERRM,'^ORA-[0-9]+: ', NULL);

在行首匹配一个模式"ORA-",后跟1或数字,然后是一个冒号,后跟一个空格,并替换为NULL。

请注意,从技术上讲,这个调用中不需要",NULL",但include向未来的维护人员表明了这里的意图,我认为这将是最佳实践。

相关内容

  • 没有找到相关文章