伙计,在DB2 9.x中,delete语句正常工作,并且如果存在特定行,则给出成功的返回码。但是,如果该行不存在,则返回非零
即说EmployeeTable不包含employeeID 1234db2 "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
如果没有行,总有没有返回成功/零返回码?
您可以将该delete语句包装在存储过程中,并在其中捕获异常。存储过程的执行将始终抛出0。
在命令行中,您无能为力,因为该命令有警告。您还可以在调用db2 delete时进行后期处理,例如,创建shell函数,并在引发sqlcode的情况下更改错误代码。
[这种情况在被迫使用另一个程序执行您的SQL代码时并不少见。
以下是一个坏主意,但如果您是表的唯一用户,则可以使用。
如果您具有插入特权,则可以插入一个虚拟行,并在该命令后进行删除,该删除将包括该虚拟行。这样,删除总是至少获得一行:
insert into mytable (id) values (9999999);
delete from mytable
where date_of_job >= current date - 1 day or
id=9999999;