如果存储过程啥都不执行,那么 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 代码会是啥?的主要内容,如果未能解决你的问题,请参考以下文章

oracle返回1405 1022是啥意思

带有“+nssearch”选项的“dig”命令啥都不返回是啥意思?

Process.Start() 啥都不做

运行可执行文件啥都不做

如果变量=数字,做X,否则啥都不做

从 Java 调用在 cmd 中执行 .bat 啥都不做