--循环语句 有三种结构 loop while for

--使用的表users
 
  1. Name Type         Nullable Default Comments  
  2. ---- ------------ -------- ------- --------  
  3. ID   NUMBER(4)    Y                          
  4. NAME VARCHAR2(29) Y   
 
--loop循环 要以end loop结束
--案例  向users表中添加10个用户,id从1开始,写一个过程
 
  1. create or replace procedure l_pro4(name varchar2) is 
  2.   v_num number := 1; 
  3. begin 
  4.   --循环体的开始 
  5.   loop 
  6.     insert into users values (v_num, name); 
  7.     --判断是否退出的条件 
  8.     exit when v_num = 10; 
  9.     --自增 
  10.     v_num := v_num + 1; 
  11.   end loop; 
  12. end
 
结果:
 
  1. SQL> exec l_pro4('51cto'); 
  2.   
  3. PL/SQL procedure successfully completed 
  4.   
  5. SQL> select *from users; 
  6.   
  7.    ID NAME 
  8. ----- ----------------------------- 
  9.     1 51cto 
  10.     2 51cto 
  11.     3 51cto 
  12.     4 51cto 
  13.     5 51cto 
  14.     6 51cto 
  15.     7 51cto 
  16.     8 51cto 
  17.     9 51cto 
  18.    10 51cto 
  19.   
  20. 10 rows selected 
 
--while循环
--案例 编一个过程,输入用户名此想users表中添加从11序号开始的10个记录
 
  1. create or replace procedure l_pro5(name varchar2) is 
  2.   v_num number := 11; 
  3. begin 
  4.   --判断 
  5.   while v_num <= 20 loop 
  6.     --循环体 
  7.     insert into users values (v_num, name); 
  8.     v_num := v_num + 1; 
  9.   end loop; 
  10. end
结果:
 
  1. SQL> exec l_pro5('51CTO'); 
  2.   
  3. PL/SQL procedure successfully completed 
  4.   
  5. SQL> select *from users; 
  6.   
  7.    ID NAME 
  8. ----- ----------------------------- 
  9.     1 51cto 
  10.     2 51cto 
  11.     3 51cto 
  12.     4 51cto 
  13.     5 51cto 
  14.     6 51cto 
  15.     7 51cto 
  16.     8 51cto 
  17.     9 51cto 
  18.    10 51cto 
  19.    11 51CTO 
  20.    12 51CTO 
  21.    13 51CTO 
  22.    14 51CTO 
  23.    15 51CTO 
  24.    16 51CTO 
  25.    17 51CTO 
  26.    18 51CTO 
  27.    19 51CTO 
  28.    20 51CTO 
  29.   
  30. 20 rows selected 
--for循环
--编写一个过程,给出用户名,然后添加10条记录
 
  1. create or replace procedure l_pro6(name varchar2) is 
  2. begin 
  3.   --这里的模式是自己设定的 
  4.   for i in reverse 1..10 loop  
  5.       insert into users values (i, name); 
  6.   end loop; 
  7. end
 
  1. SQL> exec l_pro6('51BBS'); 
  2.   
  3. PL/SQL procedure successfully completed 
  4.   
  5. SQL> select *from users; 
  6.   
  7.    ID NAME 
  8. ----- ----------------------------- 
  9.    10 51BBS 
  10.     9 51BBS 
  11.     8 51BBS 
  12.     7 51BBS 
  13.     6 51BBS 
  14.     5 51BBS 
  15.     4 51BBS 
  16.     3 51BBS 
  17.     2 51BBS 
  18.     1 51BBS 
  19.   
  20. 10 rows selected 
 
这就是三种结果,但是for好像不是很好用。。。