我正在尝试在我的MySQL数据库中创建一堆记录.这是一次创建,所以我不是要创建存储过程.这是我的代码:
BEGIN
SET i = 2376921001;
WHILE (i <= 237692200) DO
INSERT INTO `mytable` (code, active, total) values (i, 1, 1);
SET i = i+1;
END WHILE;
END
Run Code Online (Sandbox Code Playgroud)
这是错误:
[查询1中的错误]您的SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在'SET i = 2376921001 WHILE(i <= 237692200)附近使用正确的语法DO INSERT INTO coupon(第2行的couponCod'执行停止!
我尝试了一个具有相同结果的声明.代码如下:
BEGIN
DECLARE i INT unsigned DEFAULT 2376921001;
WHILE (i <= 237692200) DO
INSERT INTO `mytable` (code, active, total) values (i, 1, 1);
SET i = i+1;
END WHILE;
END
Run Code Online (Sandbox Code Playgroud)
我尝试过的另一件事是@i而不是我.同样的错误.谁能看到我做错了什么?
小智 26
drop procedure if exists doWhile;
DELIMITER //
CREATE PROCEDURE doWhile()
BEGIN
DECLARE i INT DEFAULT 2376921001;
WHILE (i <= 237692200) DO
INSERT INTO `mytable` (code, active, total) values (i, 1, 1);
SET i = i+1;
END WHILE;
END;
//
CALL doWhile();
Run Code Online (Sandbox Code Playgroud)
Ruu*_*man 23
你不能那样用WHILE; 看:mysql DECLARE WHILE外存储过程怎么样?
您必须将代码放在存储过程中.例:
CREATE PROCEDURE myproc()
BEGIN
DECLARE i int DEFAULT 237692001;
WHILE i <= 237692004 DO
INSERT INTO mytable (code, active, total) VALUES (i, 1, 1);
SET i = i + 1;
END WHILE;
END
Run Code Online (Sandbox Code Playgroud)
小提琴:http://sqlfiddle.com/#!2/a4f92/1
或者,INSERT使用您喜欢的任何编程语言生成语句列表; 对于一次性创作,应该没问题.举个例子,这是一个Bash单线程:
for i in {2376921001..2376921099}; do echo "INSERT INTO mytable (code, active, total) VALUES ($i, 1, 1);"; done
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你的数字输了一个错字; 2376921001有10位数,237692200只有9.
| 归档时间: |
|
| 查看次数: |
85482 次 |
| 最近记录: |