MySQL - LOOP 语句



存储过程是子例程,存储在 SQL 目录中的 SQL 语句段。这些过程包含输入和输出参数,或两者兼而有之。如果使用 SELECT 语句,它们可能会返回结果集;它们可以返回多个结果集。您还可以在 MYSQL 中创建函数。

与其他编程语言类似,MySQL 为流程控制语句提供支持,例如 IF、CASE、ITERATE、LEAVE LOOP、WHILE 和 REPEAT。您可以在存储程序(过程)中使用这些语句,并在存储函数中使用 RETURN。您可以将一个流程控制语句用在另一个语句中。

MySQL LOOP 语句

LOOP 是一个复合 MySQL 语句,用于重复执行单个或一组语句。

语法

以下是 MySQL 中 loop 语句的语法:

begin_label: LOOP
statement_list
END LOOP end_label

其中,statement_list 是要重复的单个或一组语句。begin_label **和** end_label 是 LOOP 语句的可选标签。

LOOP 中的语句将重复执行,直到循环终止。您可以使用 **LEAVE** 语句终止 LOOP。

在函数中使用时,LOOP 也可以使用 **RETURN** 语句终止。LOOP 中的每个语句都以分号 (;) 结尾(或当前分隔符)。

示例 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;//

输出

以下是上述查询的输出:

结果
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);

输出

上述查询生成以下输出:

样本(1000)
10000
广告

© . All rights reserved.