zoukankan      html  css  js  c++  java
  • Mysql 存储过程中使用多游标

    Mysql 存储过程中使用多游标

    drop procedure IF EXISTS test_proc_1;
    create procedure test_proc_1()
    begin
        DECLARE done INT DEFAULT 0;
        DECLARE tid int(11) DEFAULT 0;
        DECLARE tname varchar(50) DEFAULT NULL;
        DECLARE tpass varchar(50) DEFAULT NULL;
    
        DECLARE cur_1 CURSOR FOR
            select name, password from netingcn_proc_test;
    
        DECLARE cur_2 CURSOR FOR
            select id, name from netingcn_proc_test;
    
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    
        open cur_1;
        REPEAT
            FETCH cur_1 INTO tname, tpass;
            if not done then
                select tname, tpass;
            end if;
         UNTIL done END REPEAT;
        CLOSE cur_1;
    
        -- 注意这里,一定要重置done的值为 0
        set done = 0;
    
        open cur_2;
        REPEAT
            FETCH cur_2 INTO tid, tname;
            if not done then
                select tid, tname;
            end if;
         UNTIL done END REPEAT;
        CLOSE cur_2;
    end
    
    
    call test_proc_1();

    或者

    drop procedure IF EXISTS test_proc_2;
    create procedure test_proc_2()
    begin
        DECLARE done INT DEFAULT 0;
        DECLARE tname varchar(50) DEFAULT NULL;
        DECLARE tpass varchar(50) DEFAULT NULL;
    
        DECLARE cur_1 CURSOR FOR
            select name, password from netingcn_proc_test;
    
        DECLARE cur_2 CURSOR FOR
            select id, name from netingcn_proc_test;
    
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    
        open cur_1;
        REPEAT
            FETCH cur_1 INTO tname, tpass;
            if not done then
                select tname, tpass;
            end if;
         UNTIL done END REPEAT;
        CLOSE cur_1;
    
        begin
            DECLARE done INT DEFAULT 0;
            DECLARE tid int(11) DEFAULT 0;
            DECLARE tname varchar(50) DEFAULT NULL;
    
            DECLARE cur_2 CURSOR FOR
                select id, name from netingcn_proc_test;
    
            DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    
            open cur_2;
            REPEAT
                FETCH cur_2 INTO tid, tname;
                if not done then
                    select tid, tname;
                end if;
             UNTIL done END REPEAT;
            CLOSE cur_2;
        end;
    end
    
    
    call test_proc_2();
  • 相关阅读:
    2015 12 04课堂随便
    java 循环制作三角形
    2015 12 3课堂随笔
    张王李相亲应用if else
    2015 12 01 课堂笔记。 运算符的使用
    Java图形化界面设计——布局管理器之null布局(空布局)
    jQuery
    jQuery
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/lizm166/p/10303602.html
Copyright © 2011-2022 走看看