关于存储过程定义的 MySQL 错误 1064

标签 mysql sql mysql-error-1064

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

相关文章:

sql - 在 Postgres 中更改列类型会导致 pg_attrdef 警告

SQL : Test if a column has the "Not Null" property

mysql - 错误代码 1248,SQL 状态 42000 : Every derived table must have its own alias

mysql - 无法在 ssrs 中使用 mysql 存储过程

php - Mysql内连接返回重复结果

c# - Entity Framework Code First,不同上下文/数据库之间的导航属性

mysql - 多对多模型之间的查询

mysql - 在 mysql5 中创建更新操作触发器时出错?

mysql - Zend DB where 子句错误

mysql - 连接四个表的 SQL 查询