MySQL如何判断游标遍历结束了(一堆博客说的都是垃圾)?

一百度都TM类似这样子的:

    declare done int default false;
    
    declare mycursor cursor for select * from 表名;
    declare continue HANDLER for not found set done = true;
    -- 游标结束后, 会触发 not found 事件, 从而将标记变量 done 改为 true.

但是这回带来坑, 因为普通的select查询, 若没有找到, 也会触发not found事件, 从而改变标记变量的值.

请问, MySQL是没有更好的策略吗? 如果是, 存储过程真难用!

阅读 6.8k
3 个回答

select没有找到,不就等于游标没有内容吗

刚刚试了下,还真是只要在select xxx into xxx 没找到就会触发,是所有公用的情况。
既然这样只能自己写一个条件判断了。

新手上路,请多包涵

最近使用mysql游标,发现使用NOT FOUND来结束游标当其他查询没有返回结果都会触发造成提前结束,今天在处理数据中发现了一些灵感,可以先将游标的总记录数查询出来,然后用记录数来确定循环次数就可以了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题