【问题标题】:What will be the ORA code if the Stored Procedure executes nothing?如果存储过程什么都不执行,那么 ORA 代码会是什么?
【发布时间】:2017-03-06 11:53:57
【问题描述】:

我有一个从 Java 代码调用的存储过程。有一个 IF 块并且 IF 条件为假,该过程不执行任何操作。那么这种情况下的 ORA 代码是什么?

【问题讨论】:

    标签: oracle plsql exception-handling


    【解决方案1】:

    ORA 代码将是 ORA-00000: normal successful completion,因为没有发生错误。

    如果您想要不同的结果,您需要编写特定的代码。您所做的取决于您正在执行的业务规则。也许你需要提出一个例外?此示例测试是否填充了参数,如果没有则抛出异常:

    if p_str is null then
        raise_application_error(-20000, 'parameter P_STR must be populated');
    else
        ....
    end if;
    

    在这种情况下,ORA 代码将为ORA-20000。 Oracle 保留错误编号 -20999 到 -20000 供我们自己使用。


    “如果更新正在运行而表中没有变化怎么办”

    同样的事情。任何不引发异常的事情都是成功完成的。在这种情况下,我们可以测试更新是否更改了 sql%rowcount 值:

    update your_table
    set whatever = p_str
    where id = p_id; 
    if sql%rowcount = 0 then
         raise_application_error(-20001, 'No rows in YOUR_TABLE match ID = '||p_id);
    end if;
    

    【讨论】:

      【解决方案2】:

      除非从异常处理程序中调用函数,否则调用 SQLCODE(您提到的“ORA 代码”)返回的值始终为零。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-13
        • 2012-01-03
        • 2019-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-18
        相关资源
        最近更新 更多