首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌套隐式游标未清除数据

嵌套隐式游标未清除数据
EN

Stack Overflow用户
提问于 2018-05-18 17:29:47
回答 1查看 119关注 0票数 1

我有一个oracle pl/sql匿名块,在for循环中有一个隐式游标,它以这种方式嵌套在for循环上:

代码语言:javascript
复制
FOR secuence IN 1..3 LOOP
  FOR registro_notificacion IN (
             SELECT 'data' FROM my_table WHERE my_table.column1=secuence)
      LOOP
         --work with data
  END LOOP; END LOOP;

当我在secuence=1上返回值而在其他值上为空时,就会出现问题,因为出于某种原因,隐式游标本身并不是clean。因此,在secuence=2上,由于没有数据,所以不做任何操作,但出于某种原因,它仍然在第一个循环(secuence=1)上返回数据。

应该在每次迭代结束时声明并显式地结束游标吗?虽然我考虑对循环使用3,对每个secuence值使用一个,但这不是我认为的想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-18 18:22:30

我一直用光标做循环,从来没有见过你描述的情况.我唯一能想到的是,在程序的其他地方声明了一个名为secuence的变量,该变量恰好设置为1。在这种情况下,PL/SQL编译器可能选择使用全局变量secuence而不是循环控制变量secuence来生成SQL语句。一个好的经验法则是为每个循环控制变量使用唯一的名称。

但是,您可以使用以下方法完全摆脱FOR secuence...循环:

代码语言:javascript
复制
FOR registro_notificacion IN (SELECT 'data'
                                FROM my_table
                                WHERE my_table.column1 BETWEEN 1 AND 3
                                ORDER BY my_table.column1)
LOOP
     --work with data
END LOOP;

打开一个游标通常比打开三个游标要便宜。

祝你好运。

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

https://stackoverflow.com/questions/50416536

复制
相关文章

相似问题

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