如果存储过程什么都不执行,那么ORA代码是什么?

时间:2017-03-06 11:53:58

标签: oracle plsql exception-handling

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

2 个答案:

答案 0 :(得分:4)

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供我们自己使用。

  

"如果更新正在运行且表#34;

没有变化,该怎么办?

同样的事情。任何不会引发异常的事情都是成功完成的。在这种情况下,我们可以测试更新是否更改了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;

答案 1 :(得分:0)

调用SQLCODE返回的值(你提到的“ORA代码”)总是为零,除非从异常处理程序中调用该函数。