MySQL LOOP 循环语句

在本教程中,您将学习如何使用 MySQL LOOP 语句根据条件重复运行一段代码。

总结:在本教程中,您将学习如何使用 MySQL LOOP 语句根据条件重复运行一段代码。

MySQL LOOP 语句介绍

该 LOOP 语句允许您重复执行一个或多个语句。

以下是该 LOOP 语句的基本语法:

[begin_label:] LOOP
    statement_list
END LOOP [end_label]

将 LOOP 可以在开始选购标签和块的结束。

在 LOOP 执行 statement_list 多次。所述 statement_list 可具有一个或多个语句,每一个由分号(;)结束语句分隔符。

通常,使用 LEAVE 语句在满足条件时终止循环。

这是与 LOOP statement 一起使用的语句的典型语法 LEAVE :

[label]: LOOP
    ...
    -- terminate the loop
    IF condition THEN
        LEAVE [label];
    END IF;
    ...
END LOOP;

该 LEAVE 语句立即退出循环。它的工作方式类似于 break PHP、C/C++ 和 Java 等其他编程语言中的语句。

除了 LEAVE 语句之外,您还可以使用 ITERATE 语句跳过当前循环迭代并开始新的迭代。在 ITERATE 类似于 continue 在PHP,C / C ++和Java语句。

MySQL LOOP 语句实例

以下语句创建一个使用 LOOP 循环语句的存储过程:

DROP PROCEDURE LoopDemo;

DELIMITER $$
CREATE PROCEDURE LoopDemo()
BEGIN
	DECLARE x  INT;
	DECLARE str  VARCHAR(255);

	SET x = 1;
	SET str =  '';

	loop_label:  LOOP
		IF  x > 10 THEN 
			LEAVE  loop_label;
		END  IF;

		SET  x = x + 1;
		IF  (x mod 2) THEN
			ITERATE  loop_label;
		ELSE
			SET  str = CONCAT(str,x,',');
		END  IF;
	END LOOP;
	SELECT str;
END$$

DELIMITER ;

在这个例子中:

  • 存储过程从偶数构造一个字符串,例如 2、4 和 6。
  • 在 loop_label 之前 LOOP 与using语句 ITERATE 和 LEAVE 语句。
  • 如果 的值 x 大于 10 ,则循环因 LEAVE 语句而终止。
  • 如果 的值为 x 奇数,则 ITERATE 忽略其下方的所有内容并开始新的循环迭代。
  • 如果 的值为 x 偶数,则 ELSE 语句中的块将从偶数构建结果字符串。

以下语句调用存储过程:

CALL LoopDemo();

这是输出:

+-------------+
| str         |
+-------------+
| 2,4,6,8,10, |
+-------------+
1 row in set (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

在本教程中,您学习了如何使用 MySQL LOOP 语句根据条件重复执行代码块。