sunbird 发表于 2018-9-23 14:40:52

[oracle]pl/sql --循环语句demo

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

--使用的表users  


[*]Name Type         Nullable Default Comments
[*]---- ------------ -------- ------- --------
[*]ID   NUMBER(4)    Y
[*]NAME VARCHAR2(29) Y
  


--loop循环 要以end loop结束
--案例向users表中添加10个用户,id从1开始,写一个过程  


[*]create or replace procedure l_pro4(name varchar2) is
[*]v_num number := 1;
[*]begin
[*]--循环体的开始
[*]loop
[*]    insert into users values (v_num, name);
[*]    --判断是否退出的条件
[*]    exit when v_num = 10;
[*]    --自增
[*]    v_num := v_num + 1;
[*]end loop;
[*]end;
  


结果:  


[*]SQL> exec l_pro4('51cto');
[*]
[*]PL/SQL procedure successfully completed
[*]
[*]SQL> select *from users;
[*]
[*]   ID NAME
[*]----- -----------------------------
[*]    1 51cto
[*]    2 51cto
[*]    3 51cto
[*]    4 51cto
[*]    5 51cto
[*]    6 51cto
[*]    7 51cto
[*]    8 51cto
[*]    9 51cto
[*]   10 51cto
[*]
[*]10 rows selected
  


--while循环
--案例 编一个过程,输入用户名此想users表中添加从11序号开始的10个记录  


[*]create or replace procedure l_pro5(name varchar2) is
[*]v_num number := 11;
[*]begin
[*]--判断
[*]while v_numexec l_pro5('51CTO');
[*]
[*]PL/SQL procedure successfully completed
[*]
[*]SQL> select *from users;
[*]
[*]   ID NAME
[*]----- -----------------------------
[*]    1 51cto
[*]    2 51cto
[*]    3 51cto
[*]    4 51cto
[*]    5 51cto
[*]    6 51cto
[*]    7 51cto
[*]    8 51cto
[*]    9 51cto
[*]   10 51cto
[*]   11 51CTO
[*]   12 51CTO
[*]   13 51CTO
[*]   14 51CTO
[*]   15 51CTO
[*]   16 51CTO
[*]   17 51CTO
[*]   18 51CTO
[*]   19 51CTO
[*]   20 51CTO
[*]
[*]20 rows selected
  

--for循环
--编写一个过程,给出用户名,然后添加10条记录  


[*]create or replace procedure l_pro6(name varchar2) is
[*]begin
[*]--这里的模式是自己设定的
[*]for i in reverse 1..10 loop
[*]      insert into users values (i, name);
[*]end loop;
[*]end;
  

  


[*]SQL> exec l_pro6('51BBS');
[*]
[*]PL/SQL procedure successfully completed
[*]
[*]SQL> select *from users;
[*]
[*]   ID NAME
[*]----- -----------------------------
[*]   10 51BBS
[*]    9 51BBS
[*]    8 51BBS
[*]    7 51BBS
[*]    6 51BBS
[*]    5 51BBS
[*]    4 51BBS
[*]    3 51BBS
[*]    2 51BBS
[*]    1 51BBS
[*]
[*]10 rows selected
  


这就是三种结果,但是for好像不是很好用。。。

页: [1]
查看完整版本: [oracle]pl/sql --循环语句demo