DECLARE @a int,@tname char
set @a =1;
set @tname = 'test';WHILE @a <= 10
begin
@tname = @tname + @a;
insert into testTable(username,userpwd) values (@tname,'a');
@tname ='test';
@a = @a +1;
end;
上面的sql目的是批量插入10条数据,但是报错了,错在哪了?
求指点。
解决方案 »
- mysql中视图行号的问题
- mysql触发器
- 请问mysql如何设置才能使得INSERT语句中的一个字段必须有值,否则无法插入到表中
- 这是存储过程要怎么接受呢。
- 如何显示数据库中多少表格?
- 请问大家,MySQL是否可以像ACCESS那样到处移植?
- mysql+tomcat 怎样连接啊???
- 问个菜瓜问题,id smallint(6) unsigned NOT NULL,
- 请问为什么执行selcet两表联查的结果要不死机,要不就什么都查不到,实际是有数据是匹配的,在access都可以查出来
- 如何实现这种sql语句
- 请问我是这样启动mysql3.23吗?
- mysql 加密函数 password函数 和 md5函数 能不能解密
@tname = @tname + @a;
insert into testTable(username,userpwd) values (@tname,'a');
@tname ='test';
@a = @a +1;
end;
这之间的变量赋值,难道不用set @var = ....?用的是SQL Server TSQL的语法?
create table t (name varchar(32), no int);mysql> delimiter //
mysql> create procedure test_insert (a int)
-> begin
-> set @i = 1;
-> while @i < a do
-> insert into t values('abc', @i);
-> set @i = @i + 1;
-> end while;
-> end
-> //
Query OK, 0 rows affected (0.00 sec)mysql> call test_insert(100000);//
Query OK, 0 rows affected (2 min 10.13 sec)
create procedure add_date()
begin
declare i int default 0;
while i<=10 do
insert into cdr(id,userfield) values(i,'a');
set i=i+1;
end while;
end;$$
delimiter ;
Empty set (0.00 sec)mysql> drop procedure add_date;
Query OK, 0 rows affected (0.00 sec)mysql> delimiter $$
mysql> create procedure add_date()
-> begin
-> declare i int default 0;
-> while i<=10 do
-> insert into cdr(id,userfield) values(i,'a');
-> set i=i+1;
-> end while;
-> end;$$
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;
mysql> call add_date();
Query OK, 1 row affected (0.39 sec)mysql> select * from cdr;
+------+-----------+
| id | userfield |
+------+-----------+
| 0 | a |
| 1 | a |
| 2 | a |
| 3 | a |
| 4 | a |
| 5 | a |
| 6 | a |
| 7 | a |
| 8 | a |
| 9 | a |
| 10 | a |
+------+-----------+
11 rows in set (0.00 sec)