文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  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 錯誤代碼,表示unknown table時才明顯。

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;