mysql批量插入存储过程_mysql使用存储过程&函数实现批量插入

写这边文章的目的,是想结合mysql 存储过程+函数完成一个批量删除的功能吧...正好也好加深下对procedure和function的熟练操作吧...

废话不多说,我就直接上表结构啦哈,如下:

create tabledept(

idint unsigned primary keyauto_increment,

deptno mediumint unsignednot null default 0,

dnamevarchar(20) not null default"",

locvarchar(13) not null default""

)engine=innodb default charset=utf8;create tableemp(

idint unsigned primary keyauto_increment,

empno mediumint unsignednot null default 0,/*编号*/enamevarchar(20) not null default "",/*姓名*/jobvarchar(9) not null default "",/*工作*/mgr mediumint unsignednot null default 0,/*上级编号*/hiredate datenot null,/*入职时间*/saldecimal(7,2) not null, /*薪水*/commdecimal(7,2) not null,/*红利*/deptno mediumint unsignednot null default 0/*部门编号*/)engine=innodb default charset=utf8;

执行以下命令查看mysql版本是否开启了函数功能

show variables like ‘log_bin_trust_function_creators‘;set global log_bin_trust_function_creators=1;

20180111000928200852.png

执行后再看是否生效

20180111000928203782.png

创建函数(作用:生产随机字符串)

delimiter $$create function rand_string(n int) returns varchar(255)begin

declare chars_str varchar(100) default ‘qwertyuiopasdfghjklzxcvbnm‘;declare return_str varchar(255) default ‘‘;declare i int default 0;while i

创建函数(作用:随机生产部门编号)

delimiter $$create function rand_num() returns int(5)begin

declare i int default 0;set i=floor(100+rand()*10);returni;end $$

创建完后我们可以查看创建的函数:

20180111000928215501.png

接着我们来创建存储过程:

1:创建往emp表中插入数据的存储过程

delimiter $$create procedure insert_emp(in start int(10),in max_num int(10))begin

declare i int default 0;/*把autocommit设置成0*/

set autocommit= 0;

repeatset i=i+1;insert intoemp(empno,ename,job,mgr,hiredate,sal,comm,deptno)values((start+i),rand_string(6),‘SALESMAN‘,0001,curdate(),2000,400,rand_num());

until i=max_num endrepeat;commit;end $$

2:创建往dept表中插入数据的存储过程

delimiter $$create procedure insert_dept(in start int(10),in max_num int(10))begin

declare i int default 0;set autocommit=0;

repeatset i=i+1;insert into dept(deptno,dname,loc) values((start+i),rand_string(10),rand_string(8));

until i=max_num endrepeat;commit;end $$

可以查看已经创建的procedure:

20180111000928228197.png

上面2个show create procedure请分开执行,我这里直截图就只显示一个procedure啦

那我们可以开始调用存储过程了

call insert_dept(1,100);//从deptno为1起插入100条随机生成数据

执行后我的部分数据如下:

20180111000928240893.png

call insert_emp(1001,50000);//从empno为1001起插入50000条随机生成数据

执行后部分截图如下:

20180111000928252612.png

至此,整个批量插入完成...关于存储过程和函数,手册上有更详细的介绍啦,我这里就不再赘述了吧....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值