[不存在行时DB2删除语句错误

问题描述 投票:1回答:2

伙计,在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

如果没有行,总有没有返回成功/零返回码?

sql db2 error-code
2个回答
1
投票

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

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


0
投票

[这种情况在被迫使用另一个程序执行您的SQL代码时并不少见。

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

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

    insert into mytable (id) values (9999999);

    delete from mytable
    where date_of_job >= current date - 1 day or
    id=9999999;
© www.soinside.com 2019 - 2024. All rights reserved.