mysql的官方文档说使用label 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();
这是一个简单的循环,它发现即使是no.s的和也小于或等于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
可能出了什么问题?
1条答案
按热度按时间3pmvbmvn1#
你的循环基本上缺少一个标签。它应该在循环开始时声明,并在
ITERATE
,LEAVE
以及END LOOP
声明。我还建议不要命名变量sum
,因为它与sql关键字冲突。考虑:
db小提琴演示