oracle循环总结

Oracle循环分类:

1.循环关键字

1.1 循环关键字

  1. for
  2. loop
  3. while

1.2 退出循环关键字

  1. exit:跳出当前循环,是循环结束
  2. return:结束当前过程、函数等
  3. contince:结束本次循环,进入下一次循环
  4. goto:跳到指定goto位置

2.for循环

2.1 for游标循环

--for循环遍历select结果集
begin
  for thisrow in (select id,
                         provider_id,
                         provider_code,
                         provider_name,
                         setup_code 
                         from zc where id <10) 
  loop
      dbms_output.put_line('id:'||thisrow.id || ' provider_id:'|| thisrow.provider_id);
  end loop;
end;

结果:

id:1 provider_id:10295977
id:2 provider_id:10295978
id:3 provider_id:10295979
id:4 provider_id:10295980
id:5 provider_id:10295981
id:6 provider_id:10295982
id:7 provider_id:10295983
id:8 provider_id:10295984
id:9 provider_id:10295985

2.2 for普通循环

begin
  for i in 1..10 loop
      dbms_output.put_line('for:'|| i);
  end loop;
end;

结果:

for:1
for:2
for:3
for:4
for:5
for:6
for:7
for:8
for:9
for:10

3. while循环

declare 
   x number := 0;
begin
   while x<9 loop
         dbms_output.put_line('while:'||x);
         x := x + 1;
   end loop;
end;

结果:

while:0
while:1
while:2
while:3
while:4
while:5
while:6
while:7
while:8

4. loop循环

4.1 exit when

declare
 x number := 0;
begin
  loop
   x := x + 1;
   exit when x > 5;
      dbms_output.put_line('loop:' || x);
  end loop;
end;

结果:

loop:1
loop:2
loop:3
loop:4
loop:5

4.2 if

declare x number := 0;
begin
  loop
    x := x + 1;
      dbms_output.put_line('loop:' || x);
    if x > 10 then
      exit;
    end if;
  end loop;
end;

结果:

loop:1
loop:2
loop:3
loop:4
loop:5
loop:6

备注:
执行语句放在 exit when 之前和之后是有区别的。
执行语句放在 exit when之前,先执行语句后循环
执行语句放在 exit when之后,先循环后执行语句

5. goto循环

declare
  x number := 0;
begin
    <<flag>>
  x := x + 1;
  dbms_output.put_line('goto:' || x);
  if x < 5  then
     goto flag;
  end if;
end;

结果:

goto:1
goto:2
goto:3
goto:4
goto:5

备注:goto语句使用时,注意循环点和变量递增的先后,避免进入死递归!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值