2013-03-08 40 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