2011-05-25 85 views
2

我只是不断收到错误1064.我搜索了如何做while循环然后声明局部变量等,我没有看到我做错了什么。我试图没有这个“;”我厌倦了将分隔符设置为“|”能够使用“;”作为行之间的分隔符(我读的东西somwhere那种说,可以做到这一点的呢?..)批量在MySQL中插入SQL查询

我试图做的是phpMyAdmin的查询和我的MySQL版本是5.1.36

我不会解释我在尝试什么,因为我相信只需阅读下面的查询就可以轻松理解。

BEGIN 
DECLARE v1 INT DEFAULT 0; 
DECLARE v2 VARCHAR(10); 
WHILE v1 < 20 DO 
SET v2 = CONCAT('Test ', CAST(v1 AS CHAR(2))); 
INSERT INTO news(title,date, message) VALUES(v2, NOW(), v2); 
SET v1 = v1 + 1; 
END WHILE; 
END; 
+0

内你发布你正在尝试什么使用?因为有很多错别字...... 1064错误信息的内容会有所帮助。 – 2011-05-25 23:41:27

+0

你是否在例程中运行上述语句?或作为独立的陈述。 – 2011-05-26 01:15:45

+0

作为独立的陈述。我并不想创建一个过程或函数。我试图在我的数据库中添加假信息来测试它。 – 2011-05-26 01:43:13

回答

0

MySql只允许在存储程序中使用BEGIN...END标记的复合语句。

Docs

BEGIN ... END语法用于 编写复合语句,它可以 出现存储方案

0

变化

DECLAREv2 VARCHAR(10); 

DECLARE v2 VARCHAR(10); 
+0

我改正了这个问题,但要求澄清,如果这真的是问题或错别字的一个简单的例子... – 2011-05-25 23:42:03

+0

这只是我的问题中的一个错字..它再次尝试它,仍然无法正常工作。我得到的错误是:#1064 - 你的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,在'DECLARE v1 INT DEFAULT 0;'附近使用正确的语法。 DECLARE v2 VARCHAR(10); WHILE v1 <20 DO'在第2行 – 2011-05-25 23:47:25