尽管一个异常在同一时刻只能抛出一次,但是实际上错误的消息文本可能包含来自多个异常的消息,这是因为异常具有传递性。在OTHERS处理器中处理异常时,有几种方法可以得到错误信息栈中的错误消息,其中最常用的是SQLCODE和SQLERRM。
SQLCODE函数返回当前的错误编码,对于用户自定义的异常,SQLCODE总是返回1;SQLERRM用于返回错误消息文本,对于自定义的异常,SQLERRM总是返回“User-defined Exception”。
用法如:
...
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('错误编号:'||SQLCODE||' 错误消息:'||SQLERRM);
END;
SQLERRM函数还可以接受一个参数,如:
DBMS_OUTPUT.PUT_LINE(SQLERRM(0)); -- 这将返回:ORA-0000:normal,successful completion
要返回NO_DATA_FOUND的错误消息,可以传递错误号100,将返回ORA-01403错误,如SQLERRM(100)。
大多数情况下使用不带参数的SQLERRM即可,不带参数的函数调用将返回完整的错误信息。
本文探讨了异常处理机制中SQLCODE与SQLERRM的作用,详细介绍了这两个函数如何帮助开发者获取错误编码和错误消息,特别是针对自定义异常的情况。
151

被折叠的 条评论
为什么被折叠?



