当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL游标的使用步骤

MySQL游标的使用步骤

2018年02月08日  | 移动技术网IT编程  | 我要评论

使用游标的步骤大致为:

创建游标 打开游标 循环读取,难点在于判断数据是否已经读取完 关闭游标

假设现在有一个netbar_duty表用于存放交接班数据(包含交接班的开始时间dutyBeginTime和结束时间dutyEndTime),现在使用游标来遍历每个交接班的开始时间和结束时间。

SQL脚本中已经针对游标的用法给出了详细的注释。

CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `testCursor`()
    SQL SECURITY INVOKER
lab:BEGIN

    DECLARE begin_time DATETIME;
    DECLARE end_time DATETIME;

    -- 专门用来标记数据行是否读取完成
    DECLARE done INT DEFAULT FALSE;  

    -- 创建一个游标cur,数据集为从netbar_duty表中获取的交接班的开始时间和结束时间
    DECLARE cur CURSOR FOR SELECT dutyBeginTime, dutyEndTime FROM netbar_duty;

    -- 虽然FETCH无法返回数据行是否已经读取完,但在数据行读取完之后再次读取会引发NOT FOUND异常,
    -- 所以这里我们针对NOT FOUND异常来对done变量进行赋值,从而标记数据已经读取完成。
    -- DECLARE...HANDLER的具体用法见:https://blog.csdn.net/china_jeffery/article/details/79284051
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;


    -- 打开游标cur
    OPEN cur;  

    -- 循环读取
    read_loop:
    LOOP
        -- 获取一条数据,游标自动指向下一行
        FETCH cur INTO begin_time, end_time;  

        -- 检查数据是否读取完成
        IF done THEN  
            LEAVE read_loop;
        END IF;  

        -- 模拟使用刚才拿出来的数据
        select begin_time, end_time;

    END LOOP;  

    -- 关闭游标
    CLOSE cur;  

END

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网