如何在儲存過程中使用 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.