嵌套隐式游标不是clearin数据

时间:2018-05-18 17:29:48

标签: oracle plsql

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

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 for for循环,每个secuence值一个,但这不是我猜的想法。

1 个答案:

答案 0 :(得分:1)

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

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

FOR secuence...

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

祝你好运。