MySQL - ITERATE 語句



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

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

MySQL ITERATE 語句

ITERATE 語句用於重新啟動 LOOP、REPEAT 或 WHILE 語句。它不能在這些語句之外使用。

語法

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

ITERATE label

其中,label 是 LOOP、REPEAT 或 WHILE 語句的標籤。

示例 1

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

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);

輸出

以下是上述查詢的輸出:

Sample(1000)
10000

示例 2

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

delimiter //
CREATE procedure proc()
BEGIN
   DECLARE val INT default 15;
   DECLARE res VARCHAR(255) default '';
   label: LOOP
      IF val < 0 THEN
         LEAVE label;
      END IF;
      SET res = CONCAT(res, val, ',');
      SET val = val –1;
      ITERATE label;
   END LOOP;
   SELECT res;
END//

您可以像下面這樣呼叫上述過程:

call proc//

輸出

上述查詢產生以下輸出:

res
15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,
廣告