• 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();
  • 相关阅读:
    蓝牙低功耗(Bluetooth Low Energy)
    Android 蓝牙(概述)
    Android 学习笔记之 Activity 简介
    Android 学习笔记之常用控件
    Android 学习笔记之界面布局
    委托和事件(C#)
    Java 资源汇总
    如何阅读英文原版教材
    Combobox 控件绑定数据
    《将博客搬至CSDN》
  • 原文地址:https://www.cnblogs.com/lizm166/p/10303602.html
Copyright © 2020-2023  润新知