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

发布于 2022-09-11 16:03:30 字数 402 浏览 27 评论 0

一百度都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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

罗罗贝儿 2022-09-18 16:03:30

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

烟沫凡尘 2022-09-18 16:03:30

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

酸甜透明夹心 2022-09-18 16:03:30

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文