程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 教您如何使用DB2條件處理器處理存儲過程運行中的SQL錯誤

教您如何使用DB2條件處理器處理存儲過程運行中的SQL錯誤

編輯:DB2教程

DB2條件處理器對於存儲過程來說,有著不可替代的作用。在DB2中,SQL存儲過程可以利用DB2條件處理器Condition Handler)來處理存儲過程運行過程中的SQL錯誤SQLERROR)、SQL警告SQLWARNING)和沒有數據NOT FOUND)三種常見情況以及你自己定義的觸發條件,你可以使用包括退出EXIT)、繼續CONTINUE)和撤銷UNDO)在內的三種條件處理器。

在SQL存儲過程運行過程中,如果出現了SQLERROR、SQLWARNING和NOT FOUND三種情況,SQL存儲過程將會自動將執行SQL語句後的SQLCODE和SQLSTATE存儲在你事先定義好的變量SQLCODE和SQLSTATE中,並觸發你在存儲過程中定義的條件處理器。

在SQL存儲過程處理錯誤,您需要做如下兩步:聲明SQLCODE和SQLSTATE變量、定義條件處理器。在SQL存儲過程中,您通過下列語句聲明SQLCODE和SQLSTATE變量:
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';

當存儲過程執行時,DB2會自動將該SQL語句的返回碼付給這兩個變量,你可以在調試程序的時候,將這兩個值插入到調試表中,或者利用條件處理器將這兩個值返回給調用者。這樣可以方便SQL存儲過程的調試。注意:當你在SQL存儲過程中存取SQLCODE和SQLSTATE時,DB2會自動將SQLCODE和SQLSTATE置為零。

可以通過下列語句定義DB2條件處理器:
DECLARE handler-type HANDLER FOR condition
SQL-procedure-statement

其中handler-type可以是如下幾種:

CONTINUE:SQL存儲過程在執行完條件處理器中的SQL語句後,繼續執行出錯SQL語句後邊的SQL語句。

EXIT: SQL存儲過程在執行完條件處理器中的SQL語句後,退出存儲過程的執行。

UNDO:這種條件處理器僅限於原子動作ATOMIC)復合SQL語句,SQL存儲過程將會回滾包含該條件處理器的復合SQL語句,並在執行完該條件處理器中的SQL語句後,繼續執行原子動作ATOMIC)復合SQL語句後面的SQL語句。

條件包括如下三種常見情況:

SQLEXCEPTION:在SQL執行過程中返回任何負值。

SQLWARNING:在SQL執行過程中出現警告SQLWARN0為'W'),或者是任何不是+100的正的SQL返回值,相應的SQLSTATE以'01'開始。

NOT FOUND:SQL返回值為+100或者SQLSTATE以'02'開始。
當然你也可以使用DECLARE語句為特定的SQLSATE定義你自己的條件。

DB2日期格式更改的實現

DB2日期時間的基礎知識

DB2刪除數據時的小技巧

DB2事件監控的命令

教您如何實現DB2在線導入

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved