×

mysql游标 游标循环 右边双层循环

mysql 游标循环,嵌套游标循环

我的笔记 我的笔记 发表于2018-08-13 16:40:32 浏览3720 评论0

抢沙发发表评论

存储过程游标使用方法,嵌套游标使用方法

BEGIN
    -- 这里定义的变量不能和表字段相同(重点)
    DECLARE FID1 int;
    declare MC1 varchar(50);

    DECLARE FID2 int;
    declare MC2 varchar(50);

    declare `result` varchar(2000);

    DECLARE done int;
    declare DataSet_FID cursor for select FID,MC from bmlx; 
    declare DataSet_Department cursor for select FID,MC from jflx;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    SET result = '';
  
  -- 第一个游标循环
    open DataSet_FID;
    out_loop:LOOP
        FETCH DataSet_FID INTO FID1,MC1;
        IF done = 1 THEN
            LEAVE out_loop;
        END IF;

        set result = CONCAT(result,MC1,',');

     -- 第二个游标循环
        open DataSet_Department;
        inner_loop:LOOP
        FETCH DataSet_Department INTO FID2,MC2;
        IF done = 1 THEN
            LEAVE inner_loop;
        END IF;
        SET result = CONCAT(result,MC2,',');
        end LOOP inner_loop;
        CLOSE DataSet_Department;

        SET done=0;-- 注意这里(重点)
        
    END LOOP out_loop;
  CLOSE DataSet_FID;

 select `result`;
END


这是两张表的数据

select FID,MC from bmlx;

select FID,MC from jflx;


我的笔记博客版权我的笔记博客版权