MySQL LOOP语句在存储过程中如何使用?
MySQL提供了一个 LOOP 语句,它可以执行一段代码并重复地使用一个循环标签。我们有以下两个语句来控制循环−
阅读更多:MySQL 教程
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行受影响(0.07秒)
现在,当我们调用此存储过程时,可以看到以下结果−
mysql> DELIMITER ;
mysql> CALL LOOP_loop ();
+-------------+
| XYZ |
+-------------+
| 2,4,6,8,10, |
+-------------+
1行记录(0.04秒)
Query OK,0行受影响(0.04秒)
在上面的查询中,如果A的值大于10,则循环终止,因为出现了LEAVE语句。如果A的值是奇数,则ITERATE语句忽略其下面的所有内容并开始新的迭代。如果A的值是偶数,则ELSE语句中的块将使用偶数构建字符串。