PL/SQL for loop

一、数值型循环

--数值型For循环
procedure loop_num_for
(
   lowest  in number,
   highest in number
)
is
begin
   FOR even_number in lowest .. highest --升序
   loop
      --处理非平滑增长的索引
      if mod(even_number,2)=0
      then
         dbms_output.put_line('now number:' || even_number);
      end if;
   end loop;    
end loop_num_for;

这种循环在开始的时候就已经知道循环的次数了,注意这里不需要声明循环索引,因为PL/SQL会自动隐式的用一个integer类型的局部变量作为它的循环索引;

如果要降序循环,必须加上reverse关键字,并且循环上边界和下边界的顺利无需改变:

FOR even_number in reverse lowest .. highest
 loop
    dbms_output.put_line('now number:' || even_number);
 end loop;  

另外需要说明的是,数值型FOR循环中,索引总是以1为单位递增或递减。

例如:

SQL> --if exit
SQL> declare
  2    v_rlt number(8):=-3;
  3  begin
  4     <<fst_loop>>
  5     loop
  6       dbms_output.put_line('v_rlt = '||v_rlt);
  7       v_rlt:=v_rlt+1;
  8       if v_rlt > 3 then
  9        dbms_output.put_line('变量的值已经大于3,当前值为'||v_rlt);
 10        exit fst_loop;
 11       end if;
 12     end loop fst_loop;
 13       dbms_output.put_line('LOOP循环已经结束!');
 14  end;
 15  /

v_rlt = -3
v_rlt = -2
v_rlt = -1
v_rlt = 0
v_rlt = 1
v_rlt = 2
v_rlt = 3
变量的值已经大于3,当前值为4
LOOP循环已经结束!

PL/SQL procedure successfully completed

二、游标型循环

--游标型For循环
procedure loop_cursor_for
is
begin
     declare cursor userinfo_cur is select * from userinfo_table;
     begin
       FOR userinfo_rec in userinfo_cur
       loop
          dbms_output.put_line('username is:' || userinfo_rec.user_name);              
       end loop;
     end;
end loop_cursor_for;

当游标中的所有记录都取出来后,FOR循环就会自动终止,这里不用显示OPEN、CLOSE游标,PL/SQL引擎会自动处理。

参考:
1.http://www.cnblogs.com/maoniu602/archive/2013/03/01/2938758.html
2.http://www.cnblogs.com/Richardzhu/archive/2013/12/03/3455806.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值