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 ;
【讨论】:
因为它界定了构成存储过程的内容。即CREATE
和END $$
之间的东西。您不希望它在第一个 ;
结束以上是关于MySQL存储过程语法痛苦的主要内容,如果未能解决你的问题,请参考以下文章