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是没有更好的策略吗? 如果是, 存储过程真难用!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
select没有找到,不就等于游标没有内容吗
刚刚试了下,还真是只要在select xxx into xxx 没找到就会触发,是所有公用的情况。
既然这样只能自己写一个条件判断了。
最近使用mysql游标,发现使用NOT FOUND来结束游标当其他查询没有返回结果都会触发造成提前结束,今天在处理数据中发现了一些灵感,可以先将游标的总记录数查询出来,然后用记录数来确定循环次数就可以了。