mysql游标的使用:对查询的结果进行遍历

发布时间:2022-06-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了mysql游标的使用:对查询的结果进行遍历脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

mysql游标的使用:对查询的结果进行遍历

游标

     游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。 游标充当指针的作用。 尽管游标能遍历结果中的所有行,但他一次只指向一行。 游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。

--  生成所有父id;
 
-- 分隔标记
delimiter $$
-- 创建存储过程
create procedure testCur()
 
BEGIN
-- 声明变量
DECLARE cid BIGINT;
DECLARE done INT;
 
-- 创建游标,并设置游标所指的数据(这里设置ID不为1是因为ID为1的是总的大类)
DECLARE cur CURSOR for 
    SELECT id as cid from mdm_material_category where parent_id!='1' and id!='1';
-- 游标执行完,即遍历结束。设置done的值为1
DECLARE CONTINUE HANDLER for not FOUND set done=1;
-- 开启游标
open cur;
-- 执行循环
posLoop:LOOP
-- 如果done的值为1,即遍历结束,结束循环
    IF done=1 THEN
        LEAVE posLoop;
-- 注意,if语句需要添加END IF结束IF
END IF;
-- 从游标中取出cid
FETCH cur INTO cid;
-- 以游标中取出的cid为索引,逐行更新分类表:某分类parent_ids值为它的父分类parent_ids值和它父类的id
UPDATE  mdm_material_category  m1,mdm_material_category m2 SET m1.parent_ids=CONCAT(m2.parent_ids,',',m2.id)
where m1.parent_id=m2.id and m1.id=cid;
-- 关闭循环
END LOOP posLoop;
-- 关闭游标
CLOSE cur;
-- 关闭分隔标记
END $$
 

对于上述代码有几个需要注意的地方:

1.mysql存储过程每一句后面必须用;结尾,使用的临时字段需要在定义游标之前进行声明。

2. 在mysql中对于变量的声明(Declare)只能在存储过程中。注意分隔标记的缺少可能会导致失败。

接下来就是执行存储过程:

CALL testCur;

删除存储过程:

DROP PROCEDURE testCur;

关于游标的使用就是如上了!

 

脚本宝典总结

以上是脚本宝典为你收集整理的mysql游标的使用:对查询的结果进行遍历全部内容,希望文章能够帮你解决mysql游标的使用:对查询的结果进行遍历所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:数据库