求教oracle游标使用中的一个问题

luhaipeng04381 2013-07-22 09:55:46

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直接给我报错了,请教标签是不是可以呢,可以化,写个小例子给我参考下最好- -)
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈字文 2013-07-23
  • 打赏
  • 举报
回复
引用 楼主 luhaipeng04381 的回复:
如 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的版本是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
陈字文 2013-07-23
  • 打赏
  • 举报
回复
引用 楼主 luhaipeng04381 的回复:
如 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直接给我报错了,请教标签是不是可以呢,可以化,写个小例子给我参考下最好- -)

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

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧