您的位置:首页 > 数据库 > MySQL

MySQL存储过程实现批量插入数据

2013-03-22 17:22 671 查看
很久很久没有写篇文章了,主要是找不到写的,还有就是懒得写,但是今天这篇文章必须写的,因为我知道今后肯定还会用到。

好吧,一直都只知道数据库的增删改查,其他的什么事务、存储过程用的很少,今天开始项目代码编写,数据库中用户表居然一条记录都没有,既然没有记录我还怎么查询呢?想往用户表添加20条记录,难道我要一条一条的手动添加,程序员怎么可以这样?????
好吧,写个存储过程!代码如下:

CREATE PROCEDURE InsertUsers()
BEGIN
DECLARE userName VARCHAR(50);
DECLARE userPwd VARCHAR(50);
DECLARE userTureName VARCHAR(50);
DECLARE userTelephone VARCHAR(50);
DECLARE userMobilephone VARCHAR(50);
DECLARE userQq VARCHAR(50);
DECLARE userAddress VARCHAR(50);
DECLARE userEmail VARCHAR(50);
DECLARE userIsFrezee int;
DECLARE userParentId int;
DECLARE userRemark VARCHAR(50);
DECLARE userSpId int;
DECLARE i int;
	set userPwd = "123456789";

	set userTureName = "testUser";

	set userTelephone = "123456789";

	set userMobilephone = "123456789";

	set userQq = "123456798";

	set userAddress = "学府路一段24号";

	set userEmail = "asd@qq.com";

	set userIsFrezee = 0;

	set userParentId = 1;

	set userRemark = "test_user";

	set userSpId = 1;

	set i = 1;
loop1:WHILE(i < 21)
	do
		Set userName=concat('danger',i);
		INSERT into t_user(user_name, user_pwd, user_true_name, user_telephone, user_mobilephone, user_qq_number, user_address, user_email, user_isfrezee, user_parent_id, user_remark, user_sp_id)
				VALUES(userName, userPwd, userTureName, userTelephone, userMobilephone, userQq, userAddress, userEmail, userIsFrezee, userParentId, userRemark, userSpId);
		SET i = i + 1;
end while loop1;
END


存储过程写好了, CALL IsertUsers()即可;

问题一:SET一个变量的值后,居然不能继续DECLARE另外一个变量,也就是说DECLARE语句不能写在SET语句之后?

例如:

CREATE PROCEDURE test()
BEGIN
DECLARE a VARCHAR(20);
set a = "ddd";
DECLARE b VARCHAR(20);
END;
上面的写法居然报错,改一改位置:

CREATE PROCEDURE test()
BEGIN
DECLARE a VARCHAR(20);
DECLARE b VARCHAR(20);
set a = "ddd";
END;


正确!难道是我哪儿出问题了,对于这样的设计感到很无奈!

问题二:MySQL连接两个字符居然用“+”,
还好有
concat
函数,多好的,还解决了类型转换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: