DB2條件處理器處理SQL錯誤的方法

才智咖 人氣:2.89W

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

DB2條件處理器處理SQL錯誤的方法

在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定義你自己的'條件。

如何查詢我的機器型號和序列號

適用機型:

所有桌上型電腦; 所有膝上型電腦; 所有服務

文件內容:

注:下面的資訊只適用於中國大陸的PC產品,比如ThinkPad膝上型電腦,Aptiva和NetVista桌上型電腦以及Netfinity和x系列伺服器

Service hints & tips

自動檢測機器的型號和序列號

收集您的系統資訊需要花一些時間。IBM不收集任何資訊。這個功能只能在 Microsoft Windows 98SE, Me, 2000 和Windows XP 上執行。

什麼是我的機器的型號和序列號?

每臺 IBM 個人電腦都有一個作為鑑定的標誌,包含:

機型 (4字元)

型號 (3字元)

序列號 (7字元)

這個 ID 可以被用作建立您的個性化主頁。當您通過電話尋求 PC HelpCenter 的支援時也需要用到它。

在何處可以找到機型/型號/序列號 標籤?

膝上型電腦 - 膝上型電腦的機器型號和序列號在機身背面, TYPE後面7位數是機器型號,S/N 後面7位數是序列號。

NetVista 桌上型電腦電腦 - 機器型號一般在主機的正前方右下角, 是以Model開頭的7位數字,S/N 後面7位數是序列號。詳情請您點選這裡。

Aptiva 多媒體電腦- 不同的機型的查詢方法不一樣.

IBM PC / Intellistation - 機器型號一般在主機的正前方右下角, 是以Model開頭的7位數字,S/N 後面7位數是序列號。

IBM eServer x 系列伺服器, Netfinity 和 PC 伺服器 - 機器型號貼在伺服器正面面板的右下角,S/N 後面7位數是序列號。

TAGS:DB2 SQL 處理器