MySQL - LOOP 語句



儲存過程是子例程,儲存在 SQL 目錄中的 SQL 語句段。這些過程包含輸入和輸出引數,或兩者兼而有之。如果使用 SELECT 語句,它們可能會返回結果集;它們可以返回多個結果集。您還可以在 MYSQL 中建立函式。

與其他程式語言類似,MySQL 為流程控制語句提供支援,例如 IF、CASE、ITERATE、LEAVE LOOP、WHILE 和 REPEAT。您可以在儲存程式(過程)中使用這些語句,並在儲存函式中使用 RETURN。您可以將一個流程控制語句用在另一個語句中。

MySQL LOOP 語句

LOOP 是一個複合 MySQL 語句,用於重複執行單個或一組語句。

語法

以下是 MySQL 中 loop 語句的語法:

begin_label: LOOP
statement_list
END LOOP end_label

其中,statement_list 是要重複的單個或一組語句。begin_label **和** end_label 是 LOOP 語句的可選標籤。

LOOP 中的語句將重複執行,直到迴圈終止。您可以使用 **LEAVE** 語句終止 LOOP。

在函式中使用時,LOOP 也可以使用 **RETURN** 語句終止。LOOP 中的每個語句都以分號 (;) 結尾(或當前分隔符)。

示例 1

以下查詢演示瞭如何在過程中使用 LOOP 語句:

Delimiter //
CREATE procedure loopDemo()
   label:BEGIN
      DECLARE val INT ;
      DECLARE result VARCHAR(255);
      SET val =1;
      SET result = '';
         loop_label: LOOP
         IF val > 10 THEN 
            LEAVE loop_label;
         END IF;
         SET result = CONCAT(result,val,',');
         SET val = val + 1;
         ITERATE loop_label;
      END LOOP;
      SELECT result;
      END//

您可以按如下方式呼叫上述過程:

call loopDemo;//

輸出

以下是上述查詢的輸出:

結果
1,2,3,4,5,6,7,8,9,10,

示例 2

以下查詢演示瞭如何在函式中使用 LOOP 語句。

DELIMITER //
CREATE FUNCTION Sample (bonus INT)
   RETURNS INT
   BEGIN
      DECLARE income INT;
      SET income = 0;
      myLabel: LOOP
         SET income = income + bonus;
         IF income < 10000 THEN
            ITERATE myLabel;
         END IF;
         LEAVE myLabel;
      END LOOP myLabel;
   RETURN income;
END; //
DELIMITER ;

您可以按如下所示呼叫上面建立的函式:

SELECT Sample(1000);

輸出

上述查詢生成以下輸出:

樣本(1000)
10000
廣告