MySQL - ITERATE 语句



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

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

MySQL ITERATE 语句

ITERATE 语句用于重新启动 LOOP、REPEAT 或 WHILE 语句。它不能在这些语句之外使用。

语法

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

ITERATE label

其中,label 是 LOOP、REPEAT 或 WHILE 语句的标签。

示例 1

以下查询演示了如何在函数中使用 ITERATE 语句:

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

示例 2

以下查询演示了如何在过程中使用 ITERATE 语句:

delimiter //
CREATE procedure proc()
BEGIN
   DECLARE val INT default 15;
   DECLARE res VARCHAR(255) default '';
   label: LOOP
      IF val < 0 THEN
         LEAVE label;
      END IF;
      SET res = CONCAT(res, val, ',');
      SET val = val –1;
      ITERATE label;
   END LOOP;
   SELECT res;
END//

您可以像下面这样调用上述过程:

call proc//

输出

上述查询产生以下输出:

res
15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,
广告

© . All rights reserved.