1

我是 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

我已经把头撞在墙上有一段时间了,非常感谢一些帮助。

4

1 回答 1

5

您没有更改分隔符,因此;遇到的第一个分隔符会终止整个语句。

DELIMITER $$

CREATE PROCEDURE
    blah blah blah
END$$

DELIMITER ;

通过以这种方式更改分隔符,您可以安全地定义多语句过程,将法线嵌入;其中,然后使用“新”分隔符结束创建语句。之后,您恢复标准分隔符并照常进行。

于 2012-04-15T04:45:28.163 回答