当行不存在时,DB2 delete语句错误

时间:2013-03-08 09:41:33

标签: sql db2 error-code

民间, 在DB2 9.x中,如果存在特定行,则delete语句正常工作并提供成功的返回代码。但如果该行不存在,则返回非零

即Say EmployeeTable不包含employeeID 1234 db2 "delete from EmployeeTable where employeeID = 1234"
 它提供如下输出。

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

如果没有行存在,是否还有返回成功/归零代码?

2 个答案:

答案 0 :(得分:1)

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

从命令行,您无能为力,因为该命令有警告。您还可以在调用db2 delete时执行后期处理,例如,创建 shell函数,并在引发sqlcode时更改错误代码。

答案 1 :(得分:0)

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

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

如果具有插入特权,则可以插入一个虚拟行,然后在该命令后进行删除,该删除将包括该虚拟行。这样,删除操作总是至少获得一行:

    insert into mytable (id) values (9999999);

    delete from mytable
    where date_of_job >= current date - 1 day or
    id=9999999;