2012-12-05 49 views
0

我想创建一个简单的存储过程,允许我进行批量插入,但是我遇到了语法问题,无法找出哪里出了问题,尽管将我的过程语法与现有示例进行了比较,这似乎是正确的。MySQL存储过程语法痛

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

和highlits这家伙正确的语法手册:

CREATE PROCEDURE populateUserTable()BEGIN DECLARE计数器INT(10);

这是怎么回事?

+0

你是不是想从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 ; 
+0

哈哈,它为什么重要的分隔符? –

+1

因为它限定了存储过程的构成。即'CREATE'和'END $$'之间的东西。你不想让它在第一个';'结束 –