【问题标题】:What is the purpose of RAISE_APPLICATION_ERROR?RAISE_APPLICATION_ERROR 的目的是什么?
【发布时间】:2015-08-15 09:54:40
【问题描述】:

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

【问题讨论】:

  • 如果您想让合适的人群看到您的帖子,您应该编辑您的问题并添加更多标签

标签: oracle exception plsql


【解决方案1】:

raise_application_error 不仅仅是向控制台打印一条错误消息(就像dbms_output.put_line 一样)。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-05
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    相关资源
    最近更新 更多