Sql 行不存在时DB2 delete语句错误

Sql 行不存在时DB2 delete语句错误,sql,db2,error-code,Sql,Db2,Error Code,各位, 在DB29.x中,delete语句正常工作,如果存在特定的行,则会给出成功的返回代码。但如果该行不存在,则返回非零 即说EmployeeTable不包含employeeID 1234 db2“从employeeID=1234的EmployeeTable中删除” 它给出如下输出 SQL0100W No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty table. SQLSTA

各位, 在DB29.x中,delete语句正常工作,如果存在特定的行,则会给出成功的返回代码。但如果该行不存在,则返回非零

即说EmployeeTable不包含employeeID 1234
db2“从employeeID=1234的EmployeeTable中删除”

它给出如下输出

SQL0100W  No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty table.  SQLSTATE=02000

如果没有行,是否仍要返回成功/零返回代码?

您可以将该delete语句包装在存储过程中,并捕获其中的异常。存储过程执行将始终抛出0


在命令行中,您无法执行任何操作,因为该命令有一个警告。您还可以在调用db2 delete时进行后期处理,例如,创建一个shell函数,并在引发该sqlcode时更改错误代码。

您可以将该delete语句包装在存储过程中,并捕获内部异常。存储过程执行将始终抛出0


在命令行中,您无法执行任何操作,因为该命令有一个警告。您还可以在调用db2 delete时进行后期处理,例如,创建一个shell函数,并在引发该SQL代码时更改错误代码。

当被迫使用另一个程序执行SQL代码时,这种情况并不少见

以下是一个坏主意,但如果您是表的唯一用户,则可以使用

如果您具有insert权限,则可以插入一个虚拟行,并在该命令之后执行一个包含虚拟行的delete命令。这样,删除操作总是至少获得一行:

插入mytable(id)值(9999999);
从mytable中删除
其中,作业的日期>=当前日期-1天或
id=9999999;

当被迫使用其他程序执行SQL代码时,这种情况并不少见

以下是一个坏主意,但如果您是表的唯一用户,则可以使用

如果您具有insert权限,则可以插入一个虚拟行,并在该命令之后执行一个包含虚拟行的delete命令。这样,删除操作总是至少获得一行:

插入mytable(id)值(9999999);
从mytable中删除
其中,作业的日期>=当前日期-1天或
id=9999999;

您想要实现什么?@Bruno:我们已经获得了一个外部包装脚本,用于输入SQL。但是包装器脚本总是检查SQL的返回代码是否为零。因此,有人向我们提出了一个bug来处理空值场景。你想实现什么?@Bruno:我们得到了一个外部包装器脚本,用于输入SQL。但是包装器脚本总是检查SQL的返回代码是否为零。因此向我们提出了一个bug来处理空值场景。谢谢@AngocA。有没有一种方法可以使用decode或类似的方法来捕获空行条件?类似于decode的操作可以在存储过程中完成:创建过程p()begin declare dummy int;为sqlstate“02000”声明continue处理程序set dummy=1;从表十中删除;end@thanks@AngocA。有没有一种方法可以使用decode或类似的方法来捕获空行条件?类似于decode的操作可以在存储过程中完成:创建过程p()begin declare dummy int;为sqlstate“02000”声明continue处理程序set dummy=1;从表十中删除;结束@