MySQL存储过程语法痛苦

Posted

技术标签:

【中文标题】MySQL存储过程语法痛苦【英文标题】:MySQL stored procedure syntax pain 【发布时间】:2012-12-05 00:23:05 【问题描述】:

我正在尝试创建一个简单的存储过程,允许我进行批量插入,但是我遇到了语法问题并且无法弄清楚哪里出了问题,尽管将我的过程语法与现有示例进行了比较,而且似乎是正确的。

CREATE PROCEDURE populateUserTable()
 BEGIN
  DECLARE counter int(10);
  SET counter = 1;
 WHILE counter < 101 DO
  INSERT INTO user(userid) values(counter);
  SET counter = counter + 1
 END WHILE;
END

运行时,mysql 状态: 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 '' 附近使用正确的语法

并突出显示这个人:

CREATE PROCEDURE populateUserTable() BEGIN DECLARE counter INT(10) ;

这里有什么?

【问题讨论】:

您是否尝试从 mysql 命令行执行此操作?您是否更改了分隔符? 【参考方案1】:

你用过吗

DELIMITER $$

一开始?

试试

DELIMITER $$
CREATE PROCEDURE populateUserTable()
 BEGIN
   DECLARE counter int(10);
   SET counter = 1;
   WHILE counter < 101 DO
      INSERT INTO user(userid) values(counter);
      SET counter = counter + 1
   END WHILE;
END $$
DELIMITER ;

【讨论】:

因为它界定了构成存储过程的内容。即CREATEEND $$ 之间的东西。您不希望它在第一个 ; 结束

以上是关于MySQL存储过程语法痛苦的主要内容,如果未能解决你的问题,请参考以下文章

mysql存储过程语法及实例

mysql存储过程语法及实例

mysql存储过程语法及实例

MySQL:存储过程语法错误

MySQL - 存储过程语法问题

存储过程调用存储过程的语法