想要为用户定义的异常定义自定义消息。我现在所拥有的:
declare
e exception;
pragma exception_init (e, -20100);
begin
raise e;
end;
ORA-20100:
ORA-06512: at line 5
我想要的是:
exec dbms_output.put_line(userenv('COMMITSCN'))
ORA-01725: USERENV('COMMITSCN') not allowed here
ORA-06512: at "SYS.STANDARD", line 202
ORA-06512: at line 1
在“SYS.STANDARD”,第 202 行,我们可以看到:
raise USERENV_COMMITSCN_ERROR;
异常在规范中定义为:
-- Added for USERENV enhancement, bug 1622213.
USERENV_COMMITSCN_ERROR exception;
pragma EXCEPTION_INIT(USERENV_COMMITSCN_ERROR, '-1725');
问题是:
非常感谢你的回答!
最佳答案
使用 RAISE_APPLICATION_ERROR 过程引发异常允许您将消息与错误相关联:
DECLARE
e EXCEPTION;
PRAGMA EXCEPTION_INIT (e, -20100);
BEGIN
RAISE_APPLICATION_ERROR(-20100, 'This is the user-supplied message');
EXCEPTION
WHEN e THEN
DBMS_OUTPUT.PUT_LINE('Caught e: ' || SQLCODE || ' ' || SQLERRM);
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Caught something else: ' || SQLCODE || ' ' || SQLERRM);
END;
Documentation here - 特别是,阅读标题为“定义您自己的错误消息:过程 RAISE_APPLICATION_ERROR”的部分。
分享和享受。
关于oracle - 带有自定义消息的用户定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24909485/