1

伙计们,在 DB2 9.x 中,delete 语句正常工作并在特定行存在时给出成功的返回码。但如果该行不存在,则返回非零

即说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

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

4

2 回答 2

1

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

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

于 2013-03-08T10:06:13.823 回答
0

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

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

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

    insert into mytable (id) values (9999999);

    delete from mytable
    where date_of_job >= current date - 1 day or
    id=9999999;
于 2019-12-21T19:44:50.747 回答