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

    前几天在公司做一业务模块测试的时候,将测试都删除了,导致客户端想拿测试数据拿不到了,一下没时间一条一条的录数据,所以只有采取存储过程实现模拟数据插入。

数据需求:

有两个字段类型是Decimal,保留两位小数。还有两种时间: 第一个格式是"yyyyMMDD" 第二种是时间戳格式但是比第一种时间大一天。同时还有一个字段是存放前一天(类型是Decimal 其中一个)数据和今天数据差值。了解了大概业务需求,接着开始写mysql 存储过程。

代码如下:

delimiter //  /**加 // 代表默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。 因为mysql一遇到分号,它就要自动执行。 即,在语句RETURN '';时,mysql解释器就要执行了。 这种情况下,就需要事先把delimiter换成其它符号,如//或$$**/
create PROCEDURE test()/* 名字可以替换 最好和这个方法做的时吻合  我这个就是一个测试**/
begin /*  方法开始固定语法*/
DECLARE i int;/**定义一个变量 控制循环 类似java 中for循环变量 **/
DECLARE j DOUBLE;
DECLARE cv DOUBLE;
DECLARE temp DOUBLE;
DECLARE cvRatio DOUBLE;
DECLARE mydate varchar(30);
DECLARE sdate varchar(30);
DECLARE tempstr varchar(30);

set i =0;
set j =2.13;
set cv = 0;
set temp = 0;
set sdate = '20171201';
set mydate =unix_timestamp(date_add(sdate,  interval 1 day));
set cvRatio = 0;
while i<140 DO
insert into qz_share_bonus(share_day,share_money,share_quzubi,add_time,share_time,is_share,change_quzubi,change_ratio) values(sdate,j,j,mydate,mydate,1,cv,cvRatio);
set i = i+1;
set temp = j;
set j = format(RAND()*6,2)+0.01;
set sdate = date_format(date_add(sdate,  interval 1 day),'%Y%m%d');
set mydate = unix_timestamp(date_add(sdate,  interval 1 day));
set cv = j- temp;
set cvRatio = cv/temp*100;
end while;
end;//

call test() /**执行test 存储过程**/

执行结果:

存储过程实现批量插入数据_第1张图片

存储过程实现批量插入数据_第2张图片

    

你可能感兴趣的:(mysql,存储过程)