摘要:在本教程中,您将学习如何使用 MySQL LOOP
语句根据条件重复运行代码块。
MySQL LOOP
语句简介
LOOP
语句允许您重复执行一个或多个语句。
以下是LOOP
语句的基本语法:
[begin_label:] LOOP
statement_list
END LOOP [end_label]
Code language: SQL (Structured Query Language) (sql)
LOOP
可以在块的开头和结尾处具有可选标签。
LOOP
重复执行statement_list
。 statement_list
可以包含一个或多个语句,每个语句均以分号 (;) 语句分隔符终止。
通常,当条件满足时,可以使用LEAVE
语句终止循环。
这是与LEAVE
语句一起使用的LOOP
语句的典型语法:
[label]: LOOP
...
-- terminate the loop
IF condition THEN
LEAVE [label];
END IF;
...
END LOOP;
Code language: SQL (Structured Query Language) (sql)
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 ;
Code language: SQL (Structured Query Language) (sql)
在这个例子中:
- 该存储过程从偶数(例如 2、4 和 6)构造一个字符串。
-
loop_label
在LOOP
语句之前,与ITERATE
和LEAVE
语句一起使用。 - 如果
x
的值大于10
,则循环由于LEAVE
语句而终止。 - 如果
x
的值为奇数,则ITERATE
会忽略其下方的所有内容并开始新的循环迭代。 - 如果
x
的值为偶数,则ELSE
语句中的块将从偶数构建结果字符串。
以下语句调用存储过程:
CALL LoopDemo();
Code language: SQL (Structured Query Language) (sql)
这是输出:
+-------------+
| str |
+-------------+
| 2,4,6,8,10, |
+-------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.02 sec)
Code language: JavaScript (javascript)
在本教程中,您学习了如何使用 MySQL LOOP
语句根据条件重复执行代码块。
本教程有帮助吗?