文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙尺寸) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  DECLARE ... CONDITION 陳述式

15.6.7.1 DECLARE ... CONDITION 陳述式

DECLARE condition_name CONDITION FOR condition_value

condition_value: {
    mysql_error_code
  | SQLSTATE [VALUE] sqlstate_value
}

DECLARE ... CONDITION 陳述式宣告一個已命名的錯誤條件,將名稱與需要特定處理的條件關聯。該名稱可以在後續的 DECLARE ... HANDLER 陳述式中引用(請參閱第 15.6.7.2 節,「DECLARE ... HANDLER 陳述式」)。

條件宣告必須出現在游標或處理常式宣告之前。

DECLARE ... CONDITIONcondition_value 指示要與條件名稱關聯的特定條件或條件類別。它可以採用以下形式

  • mysql_error_code:一個整數常值,表示 MySQL 錯誤代碼。

    請勿使用 MySQL 錯誤代碼 0,因為它表示成功而不是錯誤條件。有關 MySQL 錯誤代碼的列表,請參閱伺服器錯誤訊息參考

  • SQLSTATE [VALUE] sqlstate_value:一個 5 字元的字串常值,表示 SQLSTATE 值。

    請勿使用以 '00' 開頭的 SQLSTATE 值,因為這些值表示成功而不是錯誤條件。有關 SQLSTATE 值的列表,請參閱伺服器錯誤訊息參考

SIGNAL 中引用或使用 RESIGNAL 陳述式所引用的條件名稱,必須與 SQLSTATE 值關聯,而不是 MySQL 錯誤代碼。

使用條件的名稱可以幫助使儲存的程式碼更清晰。例如,此處理常式適用於嘗試刪除不存在的資料表,但只有當您知道 1051 是 MySQL 錯誤代碼(表示 未知的資料表)時才顯而易見。

DECLARE CONTINUE HANDLER FOR 1051
  BEGIN
    -- body of handler
  END;

透過宣告條件的名稱,可以更容易地看出處理常式的用途

DECLARE no_such_table CONDITION FOR 1051;
DECLARE CONTINUE HANDLER FOR no_such_table
  BEGIN
    -- body of handler
  END;

以下是相同條件的已命名條件,但它基於相應的 SQLSTATE 值,而不是 MySQL 錯誤代碼

DECLARE no_such_table CONDITION FOR SQLSTATE '42S02';
DECLARE CONTINUE HANDLER FOR no_such_table
  BEGIN
    -- body of handler
  END;