[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]