如何在儲存過程中使用MySQL LOOP語句?


MySQL 提供了一個 **LOOP** 語句,它可以重複執行一段程式碼,並增加了使用迴圈標籤的靈活性。我們有以下兩個語句可以控制迴圈:

LEAVE 語句

它允許我們立即退出迴圈,而無需等待檢查條件。

ITERATE 語句

它允許我們跳過它下面的所有程式碼,並開始新的迭代。

為了演示 **LOOP** 語句在儲存過程中的用法,以下是一個儲存過程,它構建一個包含偶數(如 2, 4, 6, 8 等)的字串:

mysql> Delimiter //
mysql> CREATE PROCEDURE LOOP_loop()
    -> BEGIN
    -> DECLARE A INT;
    -> DECLARE XYZ VARCHAR(255);
    -> SET A = 1;
    -> SET XYZ = '';
    -> loop_label: LOOP
    -> IF A > 10 THEN
    -> LEAVE loop_label;
    -> END IF;
    -> SET A = A + 1;
    -> IF (A mod 2) THEN
    -> ITERATE loop_label;
    -> ELSE
    -> SET XYZ = CONCAT(XYZ,A,',');
    -> END IF;
    -> END LOOP;
    -> SELECT XYZ;
    -> END //
Query OK, 0 rows affected (0.07 sec)

現在,當我們呼叫此過程時,我們可以看到下面的結果:

mysql> DELIMITER ;
mysql> CALL LOOP_loop ();
+-------------+
| XYZ         |
+-------------+
| 2,4,6,8,10, |
+-------------+
1 row in set (0.04 sec)
Query OK, 0 rows affected (0.04 sec)

在上面的查詢中,如果 A 的值大於 10,則由於 LEAVE 語句而終止迴圈。如果 A 的值是奇數,則 ITERATE 語句會忽略它下面的所有內容並開始新的迭代。如果 A 的值是偶數,則 ELSE 語句中的程式碼塊將構建包含偶數的字串。

更新於:2020年6月22日

433 次檢視

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.