mysql 游标使用

在mysql操作中,有时需要对查出的结果集进行每条记录操作时,可以使用游标来处理,游标充当了指针的作用,每次指向结果集中的一条记录

使用语法:

  1.   声明一个游标: declare 游标名称 CURSOR for record;(record可以为任意查询的结果集)
  2.     打开定义的游标:open 游标名称;
  3.     获得下一行数据:FETCH  游标名称 into testrangeid,versionid;
  4.     需要执行的语句(增删改查):这里视具体情况而定
  5.     释放游标:CLOSE 游标名称;

示例:

BEGIN
    # 遍历停止标识
    DECLARE done INT DEFAULT FALSE;
    
    # 商品名称
    DECLARE good_name VARCHAR(20);
    DECLARE count INT DEFAULT 0;
    # 总数
    DECLARE total INT DEFAULT 0;

    # 游标定义,此处为后面查询的结果集,游标类似于指针作用,每次指向一条记录,从而对当前的这条记录进行操作
    DECLARE cur CURSOR FOR SELECT tg.good_name, od.count FROM t_order_detail od LEFT JOIN t_goods tg ON od.goods_id = tg.id WHERE od.goods_id = 1;
    
    # 当没有找到记录时设置遍历标识
    DECLARE continue HANDLER FOR NOT FOUND SET done = TRUE;
    
    # 打开定义的游标
    OPEN cur;
    # 获取下一行数据
    FETCH cur INTO good_name, count;
    # 遍历处理
    WHILE NOT done DO
        SET total = total + 1;
        # 获取下一行数据
        FETCH cur INTO good_name, count;
    END WHILE;

    # 关闭释放游标
    CLOSE cur;
    SELECT total;

END

最后SELECT total是为了查看total结果

posted @ 2019-09-16 09:55  花拾夕  阅读(1221)  评论(0编辑  收藏  举报