您的位置:首页 > 数据库 > Oracle

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

2014-07-31 00:29 465 查看
--循环语句 有三种结构 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle plsql 循环 while