MySQL - LOOP 语句
存储过程是存储在 SQL 目录中的子例程,是 SQL 语句的片段。这些过程包含 IN 和 OUT 参数,或两者兼有。如果您使用 SELECT 语句,它们可能会返回结果集;它们可以返回多个结果集。您还可以在 MYSQL 中创建函数。
与其他编程语言类似,MySQL 支持流控制语句,例如 IF、CASE、ITERATE、LEAVE LOOP、WHILE 和 REPEAT。您可以在存储程序(过程)中使用这些语句,并在存储函数中使用 RETURN 语句。您可以将一个流控制语句与另一个流控制语句一起使用。
MySQL LOOP 语句
LOOP 是一个复合 MySQL 语句,用于重复执行单个或一组语句。
语法
以下是 MySQL 循环语句的语法 -
begin_label: LOOP statement_list END LOOP end_label
其中,statement_list 是要重复执行的单个或一组语句。begin_label 和 end_label 是 LOOP 语句的可选标签。
LOOP 中的语句将重复执行,直到循环终止。您可以使用 LEAVE 语句终止循环。
在函数中使用时,循环也可以使用 RETURN 语句终止。循环中的每个语句都以分号(或当前分隔符)结尾。
示例 1
以下查询演示了如何在过程中使用 LOOP 语句 -
Delimiter // CREATE procedure loopDemo() label:BEGIN DECLARE val INT ; DECLARE result VARCHAR(255); SET val =1; SET result = ''; loop_label: LOOP IF val > 10 THEN LEAVE loop_label; END IF; SET result = CONCAT(result,val,','); SET val = val + 1; ITERATE loop_label; END LOOP; SELECT result; END//
您可以按如下方式调用上述过程 -
call loopDemo;//
输出
以下是上述查询的输出 -
result |
---|
1,2,3,4,5,6,7,8,9,10, |
示例 2
以下查询演示了如何在函数中使用 LOOP 语句。
DELIMITER // CREATE FUNCTION Sample (bonus INT) RETURNS INT BEGIN DECLARE income INT; SET income = 0; myLabel: LOOP SET income = income + bonus; IF income < 10000 THEN ITERATE myLabel; END IF; LEAVE myLabel; END LOOP myLabel; RETURN income; END; // DELIMITER ;
您可以调用上面创建的函数,如下所示 -
SELECT Sample(1000);
输出
上述查询生成以下输出 -
Sample(1000) |
---|
10000 |