【发布时间】:2014-04-18 18:31:57
【问题描述】:
这让我发疯了。
CREATE DEFINER=`root`@`localhost` PROCEDURE `CalcularCRTarea` (Id_Tarea INT, OUT crTarea decimal(12, 4))
DETERMINISTIC
BEGIN
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE _id BIGINT UNSIGNED;
DECLARE cur CURSOR FOR SELECT Id FROM Tarea_Frente where Id_Item_Tarea = Id_Tarea;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;
OPEN cur;
testLoop: LOOP
FETCH cur INTO _id;
IF done THEN
LEAVE testLoop;
ELSE
CALL CalcularCRFrente(_id, @suma);
SET crTarea = crTarea + @suma;
END IF;
END LOOP testLoop;
CLOSE cur;
END;
phpmyadmin 回我
MySQL said: Documentation
#1064 - 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 '' at line 4
那就是那一行
DECLARE done BOOLEAN DEFAULT FALSE;
这里有什么问题?我尝试了一些小的更改,但我总是遇到同样的错误。我检查了文档,但没有看到语法错误。 我知道这是一个愚蠢的错误,但我坚持了半个小时。 是一个游标,它遍历每一行并为每一行执行一个存储过程;我已经使用存储函数完成了它(它就像一个魅力)但是在服务器上发布时我看到我的共享主机不支持存储函数,只支持存储过程:(所以这是我最好的方式找到了。
【问题讨论】:
-
我在 MySQL 5.6.16 上进行了测试,它工作正常,没有错误。你确定你发布了正确的代码吗?当您在此处发布时,是否有任何隐藏的奇怪空白字符被过滤掉了?
-
这是正确的代码。我想到了隐藏的奇怪空白,但我在每个“;”之后删除了每个人。我正在使用 MySQL 5.5.35
标签: mysql sql stored-procedures mysql-error-1064