当前位置: 代码迷 >> SQL >> PL/SQL脚本语言循环loop for while的用法学习示范
  详细解决方案

PL/SQL脚本语言循环loop for while的用法学习示范

热度:26   发布时间:2016-05-05 12:29:44.0
PL/SQL脚本语言循环loop for while的用法学习示例
(一)、循环学习
(a)、loop 循环
     declare
       --  求和变量   i变量 1.。100
       v_sum number(5);
       v_i number(5);
     begin
       v_sum :=0;
       v_i := 1;
 
       loop
           v_sum := v_sum + v_i;
           v_i := v_i+1;
        exit when  v_i>100; --退出条件
       end loop;
       dbms_output.put_line(v_sum);
(b)、for循环使用
     在for循环中,不需要对循环变量(index)进行声明,oracle会默认把它当成binary_integer来使用
     -- for 循环  for  变量   in  集合   loop   循环体; end loop; 
     --变量不需要声明 自动匹配集合内元素的类型    变量 还可以控制循环的次数  不可以被直接赋值
     --1..100 数值型集合的固定写法
示例(1)
     for v_ii in 1..10  loop
        v_sum := v_sum + v_ii;
        v_ii :=  v_ii +1;
     end loop;
--示例(2)
     for v_ii in 1..5  loop
        v_sum := v_sum + v_i;
        v_i :=  v_i +2;
     end loop;
     dbms_output.put_line(v_sum);
 
(c)、while 循环使用
示例(3)
   -- while  执行的条件  loop   循环体;   end loop;
      while  v_i <=100  loop
          v_sum := v_sum + v_i;
          v_i :=  v_i +1;
      end loop;
      dbms_output.put_line(v_sum);
   end;

(二)、三种方法输出乘法表
示例(1)使用loop实现
declare
  v_i number(10);
  v_j number(10);
begin
  v_i := 1;
  loop
    v_j := 1;
    loop
        dbms_output.put(v_i||'*'||v_j||'='||v_i*v_j||'   '); 
        v_j := v_j + 1;
        exit when v_j > v_i;
    end loop;
    dbms_output.put_line('');
    v_i := v_i + 1;
    exit when v_i>9; 
  end loop;
end;

示例(2)使用for实现


declare

begin
  v_d := 1;
  for v_i in 1..9 loop
       for v_j in 1..v_i loop
         dbms_output.put(v_i||'*'||v_j||'='||v_i*v_j||'   ');
      
        end loop;
        dbms_output.put_line('');
  end loop;
 

end;


示例(3)使用while实现

declare
  v_i number(10);
  v_j number(10);
begin
  v_i := 1;
  while v_i < 10 loop
        v_j := 1;
        while v_j <= v_i loop
        dbms_output.put(v_i||'*'||v_j||'='||v_i*v_j||'  ');
        v_j := v_j + 1;
        end loop; 
        dbms_output.put_line('');
        v_i := v_i + 1;
  end loop;
end;
  相关解决方案