2013-03-08 54 views
0

伙计, 在DB2 9.x中,删除语句正常工作,并且如果特定行存在,则返回代码成功。但是,如果该行不存在,则返回非零当行不存在时,DB2删除语句错误

即说EmployeeTable中不包含雇员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 

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

+0

你想达到什么目的? – bruno 2013-03-08 09:52:32

+0

@Bruno:我们已经提供了一个外部包装脚本来输入SQL的。但是包装脚本总是检查SQL的返回代码是否为零。因此,我们提出了一个处理空值情形的错误。 – diaryfolio 2013-03-08 10:16:24

回答

1

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

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

+0

谢谢@AngocA。有没有使用解码或类似的方式来捕捉空行状态? – diaryfolio 2013-03-08 10:13:57

+0

有点像解码可以在存储过程中完成:create procedure p()begin declare dummy int;为sqlstate'02000'声明继续处理程序设置dummy = 1;从tableX中删除;结束@ – AngocA 2013-03-08 20:54:00