RAISE_APPLICATION_ERROR的目的是什么?

Tor*_*o23 3 oracle plsql exception

据我所知,它RAISE_APPLICATION_ERROR关联的消息错误只对用户有意义.但用户是否只能通过以下方式编写类似的异常?

DECLARE
e_negative EXCEPTION;


BEGIN
IF v_sid < 0 THEN
RAISE e_negative;
...

EXCEPTION
WHEN e_negative THEN
DBMS_OUTPUT.PUT_LINE ('An id cannot be negative');
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 9

raise_application_error不只是向控制台打印错误消息(就像dbms_output.put_line).

首先,它是一个实际错误 - 它使语句失败,终止当前块的执行,并传播到外部块(类似于throwJava或raisePython).

其次,无论控制台如何,它实际上都会返回此错误.dbms_output根据客户端的不同,可能会关闭或忽略消息.无论客户端如何,引发应用程序错误都可以返回失败的详细信息.