MySQL LOOP循环语句

时间:2019-11-20 08:52:20  来源:igfitidea点击:

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

MySQL LOOP语句简介

LOOP语句使您可以重复执行一个或多个语句。

这是LOOP语句的基本语法:

[begin_label:] LOOP
    statement_list
END LOOP [end_label]

LOOP在块的开头和结尾可以具有可选标签。

LOOP重复执行statement_list。
statement_list可以具有一个或多个语句,每个语句以分号(;)语句定界符终止。

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

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

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

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

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

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构造一个字符串。

  • LOOPstatement之前的loop_label与ITERATE和LEAVE语句一起使用。

  • 如果x的值大于10,则由于LEAVE语句而终止循环。

  • 如果x的值是一个奇数,则ITERATE忽略它下面的所有内容并开始新的循环迭代。

  • 如果x的值为偶数,则ELSEstatement中的块将从偶数构建结果字符串。

以下语句调用存储过程:

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语句根据条件重复执行代码块。