declare
  定义游标
begin
  打开游标
   
  loop
  用fetch提取数据
  exit when cur_rateselect%notfound;
  
  dosomething other...1;    ----------------
  if (条件) then
  希望在此跳转到other...2结束(也就是进入游标的下一条记录操作,功能类似c中循环的continue作用)
  end if;
  ----------------  dosomething other...2;     end loop;
end 
请问我该如何实现上述的希望?以前没有写过,现在赶鸭子上架,我在一边写一边学在线等
PS(我用next直接给我报错了,请教标签是不是可以呢,可以化,写个小例子给我参考下最好- -)Oracle

解决方案 »

  1.   


    DECLARE
        CURSOR CUR_FOO IS SELECT LEVEL L FROM DUAL CONNECT BY LEVEL<=10;
        REC_FOO CUR_FOO%ROWTYPE;
    BEGIN
         OPEN CUR_FOO;
              LOOP
                  FETCH CUR_FOO INTO REC_FOO;
                  EXIT WHEN CUR_FOO%NOTFOUND;
                  IF REC_FOO.L=9 THEN
                     GOTO LEBEL;
                  END IF;
                  DBMS_OUTPUT.PUT_LINE('==>'||REC_FOO.L);
                  <<LEBEL>>
                  DBMS_OUTPUT.PUT(' ');
              END LOOP;
         CLOSE CUR_FOO;
    END;
    ==>1
     ==>2
     ==>3
     ==>4
     ==>5
     ==>6
     ==>7
     ==>8
      ==>10
      

  2.   


    如果你的ORACLE的版本是11G以上的话,可以支持CONTINUE关键字:DECLARE
        CURSOR CUR_FOO IS SELECT LEVEL L FROM DUAL CONNECT BY LEVEL<=10;
        REC_FOO CUR_FOO%ROWTYPE;
    BEGIN
         OPEN CUR_FOO;
              LOOP
                  FETCH CUR_FOO INTO REC_FOO;
                  EXIT WHEN CUR_FOO%NOTFOUND;
                  IF REC_FOO.L=9 THEN
                     CONTINUE;
                  END IF;
                  DBMS_OUTPUT.PUT_LINE('==>'||REC_FOO.L);
              END LOOP;
         CLOSE CUR_FOO;
    END;==>1
    ==>2
    ==>3
    ==>4
    ==>5
    ==>6
    ==>7
    ==>8
    ==>10