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