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

时间:2022-12-13 15:32:16

--循环语句 有三种结构 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_num <= 20 loop
--循环体
insert into users values (v_num, name);
v_num := v_num + 1;
end loop;
end;
结果:
SQL> exec 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好像不是很好用。。。

 

本文出自 orangleliu笔记本 博客,请务必保留此出处http://blog.csdn.net/orangleliu/article/details/38309423