📅  最后修改于: 2023-12-03 14:44:28.506000             🧑  作者: Mango
MySQL 支持几种类型的循环,可用于在存储过程和函数中执行某些操作。这些类型的循环包括 WHILE 循环、REPEAT 循环和 LOOP 循环。
WHILE 循环基于一个条件来重复执行一组 SQL 语句。当指定的条件不再满足时,循环将终止。语法如下:
WHILE expr DO
statement_list
END WHILE
其中 expr
是一个逻辑表达式,statement_list
是要执行的一组 SQL 语句。例如,以下代码将从 1 循环到 10,每次递增 1:
DECLARE i INT DEFAULT 1;
WHILE i <= 10 DO
-- 执行一些操作
SET i = i + 1;
END WHILE;
REPEAT 循环是另一种常见的循环类型,它与 WHILE 循环类似,但它首先执行一组 SQL 语句,然后基于一个条件重复执行这些语句。语法如下:
REPEAT
statement_list
UNTIL expr
END REPEAT
其中 statement_list
是要执行的一组 SQL 语句, expr
是一个逻辑表达式,循环将在 expr
为真时终止。例如,以下代码将从 10 循环到 1,每次递减 1:
DECLARE i INT DEFAULT 10;
REPEAT
-- 执行一些操作
SET i = i - 1;
UNTIL i = 1 END REPEAT;
LOOP 循环基于一个条件无限循环执行一组 SQL 语句,直到使用 LEAVE 语句显式终止循环。语法如下:
loop_label: LOOP
statement_list
END LOOP loop_label
其中 loop_label
是一个可选的标签,statement_list
是要执行的一组 SQL 语句。以下是一个计算数字的简单示例,直到达到某个阈值才停止:
DECLARE i INT DEFAULT 1;
my_loop: LOOP
-- 执行一些操作
SET i = i + 1;
-- 检查循环是否应终止
IF i > 10 THEN
LEAVE my_loop;
END IF;
END LOOP my_loop;
MySQL 的循环语句可以帮助程序员在存储过程和函数中执行重复的操作。 WHILE 循环、REPEAT 循环和 LOOP 循环各自有不同的应用场景,需根据实际情况选择使用。务必注意在循环中使用 LEAVE 语句来显式终止循环,以避免无限循环导致数据库性能下降。