MySQL - DECLARE ... CONDITION 語句



在 MySQL 中使用儲存過程時,如果發生異常或錯誤,則過程的執行會突然終止。為了避免這種情況,您需要在 MYSQL 中處理異常。

MySQL 提供了一個處理程式來處理儲存過程中的異常。您可以透過使用 MySQL DECLARE ... HANDLER 語句宣告處理程式來處理這些異常。

在宣告處理程式時,您需要提供處理程式操作(CONTINUE 或 EXIT 或 UNDO)、條件值和語句。

DECLARE ... CONDITION 語句

使用 DECLARE ... CONDITION 語句,您可以將名稱與所需的錯誤條件關聯起來。稍後您可以在 DECLARE ... HANDLER 語句中使用它。

語法

以下是 DECLARE ... CONDITION 語句的語法:

DECLARE condition_name CONDITION FOR condition_value

其中,condition_name 是要與條件關聯的名稱,condition_value 是特定條件或條件類別。條件值可以是

  • 表示 MYSQL 錯誤程式碼的整數。
  • 表示 SQLSTATE 值的 5 個字元的字串文字。

示例

以下過程接受兩個數字並執行除法運算。如果除數為 0,則列印錯誤。在這裡,我們定義了自己的處理程式條件以顯示錯誤。

DELIMITER //
   CREATE PROCEDURE sample(IN dividend INT, IN divisor INT, OUT res double)
   BEGIN
      DECLARE dividedByZero CONDITION FOR SQLSTATE '22012';
      DECLARE CONTINUE HANDLER FOR dividedByZero
      RESIGNAL SET MESSAGE_TEXT = 'Error Denominator given is zero';
   IF divisor = 0 THEN
      SIGNAL dividedByZero;
   ELSE
      SET res:= dividend / divisor;
   END IF;
   END//
DELIMITER ;

如果您透過將第二個引數作為“0”呼叫上述過程,如下所示:

CALL sample(25, 0, @res);

將顯示以下錯誤:

ERROR 1644 (22012): Error Denominator given is zero
廣告