Oracle 循环学习

来源:互联网 发布:php面试让现场写代码 编辑:程序博客网 时间:2024/05/17 21:51

1.   LOOP循环语句:

loop
statement1;
....
exit [when condition];
end loop;

(当condition为true时,会退出循环,并执行end loop后的相应操作)

declare
i int :=1;
begin
loop
insert into temp values (i);
exit when i=10;
i:= i+1;
end loop;
end;
/

解释:在执行以上PL/SQL块时,会使用基本循环为TEMP表插入10条数据(1,2,...,10),并当i=10时退出循环


2.while循环:

while condition loop
statement1;
statement2;
....
end loop;

(当condition为true时,PL/SQL执行器会执行循环体内的语句;当condition为false或null时,会退出循环,并执行end loop后的语句)

例:
declare
i int :=1;
begin
while i <= 10 loop
insert into temp values (i);
i := i+1;
end loop;
end;
/

解释:当执行以上PL/SQL块时,会使用while循环为temp表插入10条记录(1,2,....,10),当i=11时会退出循环。

3.For循环:

for counter in [reverse]
lower_bound .. upper_bound loop
statement1;
statement2;
...
end loop;

(counter是循环控制变量,并且该变量由oracle隐含定义,不需要显示定义;lower_bound和upper_bound分别对应循环控制变量的下界值和上界值。默认情况下,当使用for循环时,每次循环时循环控制变量会自动增一;如果指定reverse选项,那么每次循环时循环变量会自动减一。)


例:
begin
for i in reverse 1 .. 10 loop
insert into temp values(i);
end loop;
end;
/

解释:当执行以上PL/SQL块时,会为temp表插入10条记录。因为指定了reverse选项,所以被插入数据的顺序为10,9,8....1。

4.嵌套循环:
嵌套循环是指在一个循环语句之中嵌入另一个循环语句,而标号(label)则用于标记嵌套块或嵌套循环。

declare
result int;
begin
<<outer>>
for i in 1 ..100 loop
<<inter>>
for j in 1 ..100 loop
result := i*j;
exit outer when result =1000;
exit when result=500;
end loop inner;
dbms_output.put_line(result);
end loop outer;
dbms_output.put_line(result);
end;
/

当执行以上PL/SQL块时,如果result=1000,那么会直接退出外层循环,而当result=500时只会退出内层循环。

 

0 0
原创粉丝点击