欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-17 20:04:34
...

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

数据需求:

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

执行结果:

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

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

    

相关标签: 存储过程