在LOOP ORACLE PL / SQL中选择的总ROWS

时间:2015-06-02 16:36:23

标签: sql oracle plsql

我只想在oracle循环中从0迭代到n-1,就像这样:

FOR X IN CLEEVECTOR LOOP 

但我想知道是否可以使用条件:

    if X = TOTALROWS - 1 then 
       exit;
    END IF:

有一些推荐或解决方案? 感谢您帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

因此,您希望处理除光标返回的最后一个值以外的所有值。由于光标不知道它将返回多少行,因此您只能说"如果这是倒数第二行"则中断。但是可以保存要处理的值,然后在下一次迭代中处理它,如

DECLARE
  strLast_ID  VARCHAR2(1000) := NULL;

  CURSOR CLEEVECTOR IS
    select regexp_substr(p_checkboxes,'[^,]+', 1, level) ID
      from dual
      connect by regexp_substr(p_checkboxes, '[^,]+', 1, level) is not null;
BEGIN
  FOR X IN CLEEVECTOR LOOP
    IF strLast_ID IS NOT NULL THEN
      -- code to process strLast_ID
    END IF;

    strLast_ID := X.ID;
  END LOOP;
END;

对此进行广泛的评论,以解释发生了什么事情,以便跟进之后能够弄清楚意图是什么。