如果存储过程啥都不执行,那么 ORA 代码会是啥?
Posted
技术标签:
【中文标题】如果存储过程啥都不执行,那么 ORA 代码会是啥?【英文标题】:What will be the ORA code if the Stored Procedure executes nothing?如果存储过程什么都不执行,那么 ORA 代码会是什么? 【发布时间】:2017-03-06 11:53:57 【问题描述】:我有一个从 Java 代码调用的存储过程。有一个 IF 块并且 IF 条件为假,该过程不执行任何操作。那么这种情况下的 ORA 代码是什么?
【问题讨论】:
【参考方案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 代码”)返回的值始终为零。
【讨论】:
以上是关于如果存储过程啥都不执行,那么 ORA 代码会是啥?的主要内容,如果未能解决你的问题,请参考以下文章