mysql 游标使用
在mysql操作中,有时需要对查出的结果集进行每条记录操作时,可以使用游标来处理,游标充当了指针的作用,每次指向结果集中的一条记录
使用语法:
- 声明一个游标: declare 游标名称 CURSOR for record;(record可以为任意查询的结果集)
- 打开定义的游标:open 游标名称;
- 获得下一行数据:FETCH 游标名称 into testrangeid,versionid;
- 需要执行的语句(增删改查):这里视具体情况而定
- 释放游标: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结果