首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地为遍历表格中所有行的mysql游标设置停止条件?

如何正确地为遍历表格中所有行的mysql游标设置停止条件?
EN

Stack Overflow用户
提问于 2013-03-25 22:12:19
回答 1查看 2.1K关注 0票数 0

我正在学习mysql游标。

下面是一个mysql程序,我实际上想遍历表A中的所有行,并在表B中为每个A的行‘选择’相关的东西。

现在的问题是,当内部的'select‘返回一个空集时,while循环中断,这显然不是我所期望的行为。(我希望它循环遍历A的所有行!如果当前行在B中没有相关内容,则转到下一行!)

我了解到游标的停止条件应该类似于DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop=1;,我也知道这就是问题的原因。

但是对于这种情况,常规的工作是什么呢?

代码语言:javascript
复制
create procedure SOME_PROC () 
BEGIN
    DECLARE temp_id int; 
    DECLARE cursor_id CURSOR FOR select id from A;
    DECLARE stop int default 0;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop=1; 
    OPEN cursor_id;
        FETCH cursor_id INTO temp_id;
        while stop <> 1 do
            select B.x from B where B.id = cursor_id;
            FETCH cursor_id INTO temp_id;
        end while;
    CLOSE cursor_id; 
END
EN

回答 1

Stack Overflow用户

发布于 2015-12-30 22:42:24

解决方法:使用put SELECT ...可能不会在单独的BEGIN中返回任何行...具有自己的CONTINUE处理程序的END块作为解决办法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15617092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档