我是 MySQL 程序的新手。我只是想在数据集上运行游标,并为每一行运行一个不同的过程(我碰巧知道一个有效)。我在以下第三行收到错误代码 1064:
CREATE PROCEDURE `safecycle`.`sp_aggregateAllPORDaily` ()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE porID SMALLINT UNSIGNED;
DECLARE cur1 CURSOR FOR SELECT ID FROM point_of_recycle;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO porID;
IF done THEN
LEAVE read_loop;
END IF;
CALL sp_aggregatePORDaily(porID);
END LOOP;
CLOSE cur1;
END
我已经用头撞墙了一段时间,非常感谢您的帮助。
最佳答案
您没有更改定界符,因此遇到的第一个 ;
终止了整个语句。
DELIMITER $$
CREATE PROCEDURE
blah blah blah
END$$
DELIMITER ;
通过以这种方式更改定界符,您可以安全地定义多语句过程,将普通的 ;
嵌入其中,然后以"new"定界符结束创建语句。之后,您恢复标准分隔符并照常继续。
关于关于存储过程定义的 MySQL 错误 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159580/