【发布时间】:2020-09-30 19:47:20
【问题描述】:
MySQL 的官方文档说,LOOP 语句的使用标签是可选的。但是当我在没有标签的存储过程中使用LOOP 语句时,出现了错误。 SQL脚本文件如下:
DELIMITER $$
DROP PROCEDURE IF EXISTS loop_demo $$
CREATE PROCEDURE loop_demo()
BEGIN
DECLARE i INT;
DECLARE sum INT;
SET i = 0;
SET sum = 0;
LOOP
IF i > 10 THEN LEAVE ;
END IF;
SET i = i + 1;
IF (i MOD 2) THEN ITERATE ;
ELSE
SET sum = sum + i;
END IF;
END LOOP;
SELECT sum;
END $$
DELIMITER ;
CALL loop_demo();
这是一个简单的循环,它找到小于或等于 10 的偶数之和。但是当我运行程序时,会生成以下错误消息:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';
END IF;
SET i = i + 1;
IF (i MOD 2) THEN ITERATE ;
ELSE
' at line 8
可能出了什么问题?
【问题讨论】:
-
标签对于“离开”不是可选的。
-
这是否意味着如果我们要在
LOOP中使用LEAVE,那么我们必须使用“标签”?
标签: mysql sql loops stored-procedures