begin?
declare rdevid int; //声明参数
declare rech_id int;
declare slot int;
declare new_rech_id int;
declare new_price DOUBLE;//声明参数
declare done INT DEFAULT FALSE;////声明结束标识参数
--? 声明游标
DECLARE rdevrech_id CURSOR FOR
select r.id as rdevid,r.rechargeconfig_id as rech_id,r.slot_no as slot from b_device_tbl dev
LEFT JOIN r_device_rechargeconfig_tbl r on dev.id= r.device_id
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN? rdevrech_id;? ?
-- 遍历
read_loop: LOOP
-- 取值
FETCH? NEXT from rdevrech_id INTO rdevid,rech_id,slot;
IF done THEN
LEAVE read_loop;
END IF;// 结束判断
select price into new_price from c_device_rechargeconfig_item_tbl where rechargeconfig_id =rech_id limit 1;
INSERT INTO +c_device_rechargeconfig_tbl+ (? +type+, +style_id+, +is_default+, +dev_type_code+, +is_deleted+, ???+create_time+, +slot_no+)
select max(id) into new_rech_id from c_device_rechargeconfig_tbl ;
INSERT INTO? +c_device_rechargeconfig_item_tbl+ (? +price+, +goods+, +description+, +is_deleted+, +create_time+, ????+rechargeconfig_id+ )
update r_device_rechargeconfig_tbl set rechargeconfig_id=new_rech_id where id=rdevid;
END LOOP;
CLOSE rdevrech_id;
end;
CREATE DEFINER= XXXXXX @ % PROCEDURE PRO_taxpayer_invoice_statistical ()
BEGIN
DECLARE v_max_date datetime;
SELECT MAX(sii.created_on) INTO v_max_date
FROM sj_taxpayer_invoice_statistical_info sii;
SELECT 1;
END
把sql语句写到for循环的循环体里就好了,for不是mysql的语言,你还需要web语言来驱动(如php,jsp等)
已经测试,创建并运行下面的存储过程可以循环添加数据:
create procedure dowhile()
begin
declare i int default 0;
start transaction;
set i=i+1;
end while;
commit;
end;
delimiter;
一条insert语句批量插入多条记录
常见的insert语句,向数据库中,一条语句只能插入一条数据:
insert into persons
(id_p, lastname , firstName, city )
(如上,仅插入了一条记录)
怎样一次insert插入多条记录呢?
示例:
values
这样就批量插入数据了, 遵循这样的语法,就可以批量插入数据了.
执行成功
以上就是土嘎嘎小编为大家整理的mysql怎么循环插入相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!