RAISE_APPLICATION_ERROR的目的是什么?

时间:2015-06-01 19:47:07

标签: oracle exception plsql

我理解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');

1 个答案:

答案 0 :(得分:9)

raise_application_error不只是向控制台打印错误消息(如dbms_output.put_line所做的那样)。

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

其次,无论控制台如何,它实际上都会返回此错误。 dbms_output的消息可能会被关闭或忽略,具体取决于客户端。无论客户端如何,引发应用程序错误都可以返回失败的详细信息。