mysql利用存储循环插入数据方法

问题:需要将查询到的数据进行循环插入另外的表中。
原理:利用存储过程可以解决。
例子说明:

drop procedure if exists proc_tmp;
delimiter $$
create procedure proc_tmp()
begin
    #声明一个开关变量flag用于循环结束判断默
    declare done  INT default FALSE;
    #用于存储结果集的记录(因为我这里结果集的记录只有一列且为int类型)
    declare operatorId int(11);
        #申明一个游标
        declare idCur  cursor for(
                        SELECT
                            a.id
                        FROM
                            user_info a
                        LEFT JOIN test_info b ON a.id= b.id
                        WHERE
                            a.`STATUS` = 1
                        AND b.`STATUS` = 1
          );
    #设置循环结束标识done值怎么改变 的逻辑
        declare continue handler for not found set done = TRUE;

        #打开游标
        open idCur;
    #循环开始 
        repeat
                #把游标的内容赋值到变量中。
                fetch idCur into operatorId;
                #数值为非0,MySQL认为是true
                if not done THEN  
        #84 菜单id
                INSERT INTO use_menu(USER,menu)VALUES(operatorId,55);
                end if;
                until done end repeat;
        #关闭游标
        close idCur;
end $$

call proc_tmp();
#删除临时存储过程
drop procedure proc_tmp;

猜你喜欢

转载自blog.csdn.net/qq3399013670/article/details/81326653
今日推荐