【发布时间】:2017-03-06 11:53:57
【问题描述】:
我有一个从 Java 代码调用的存储过程。有一个 IF 块并且 IF 条件为假,该过程不执行任何操作。那么这种情况下的 ORA 代码是什么?
【问题讨论】:
标签: oracle plsql exception-handling
我有一个从 Java 代码调用的存储过程。有一个 IF 块并且 IF 条件为假,该过程不执行任何操作。那么这种情况下的 ORA 代码是什么?
【问题讨论】:
标签: oracle plsql exception-handling
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;
【讨论】:
除非从异常处理程序中调用函数,否则调用 SQLCODE(您提到的“ORA 代码”)返回的值始终为零。
【讨论】: