如
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
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
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
如果你的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