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

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

数据需求:

有两个字段类型是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 存储过程**/

执行结果:



    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛乌龟一起走

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值