oracle循环语句

来源:互联网 发布:linux打开一个文件 编辑:程序博客网 时间:2024/06/09 18:24

编写循环控制结构时,用户可以使用基本循环,WHILE循环和FOR循环等三种类型的循环语句,下面分别介绍使用这三种循环语句的方法。

1.基本循环

LOOP         statement1;         ......          EXIT [WHEN condition];END LOOP;

当使用基本循环时,无论是否满足条件,语句至少会被执行一次,当condition为TRUE时,会退出循环,并执行END LOOP后的相应操作。当编写基本循环时一定要包含EXIT语句,否则会陷入死循环。另外还应该定义循环控制变量,并且在循环体内修改循环控制变量的值。示例:

SQL> declare  2  i int:=1;  3  begin  4  loop  5  insert into testloop values(i);  6  exit when i=10;  7  i:=i+1;  8  end loop;  9  end;10  /

2.WHILE循环

基本循环至少要执行一次循环体内的语句,而对于WHILE循环来说,只有条件为TRUE时,才会执行循环体内的语句。WHILE循环以WHILE …LOOP开始,以END LOOP结束。

WHILE condition LOOP           statement1;           statement2;           .....END LOOP;

当condition为TRUE时,执行循环体内的语句,而当condition为FALSE或NULL时,会退出循环,并执行END LOOP后的语句。当使用WHILE循环时,应该定义循环控制变量,并在循环体内改变循环控制变量的值。示例:

SQL> declare  2  i int:=1;  3  begin  4  while i<=10 loop  5  insert into testloop values(i);  6  i:=i+1;  7  end loop;  8  end;  9  /

3.FOR循环

当使用基本循环或WHILE循环时,需要定义循环控制变量,并且循环控制变量不仅可以使用NUMBER类型,也可以使用其他数据类型。当使用FOR循环时,ORACLE会隐含定义循环控制变量。

FOR counter in [REVERSE] lower_bound. .upper_bound LOOP         statement1;         statement2;         .......END LOOP;

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

SQL> begin  2  for i in reverse 1..10 loop  3  insert into testloop values(i);  4  end loop;  5  end;

4.嵌套循环和标号

嵌套循环是指在一个循环语句之中嵌入另一个循环语句,而标号(label)则用于标记嵌套块或嵌套循环,通过在嵌套循环中使用标号,可以区分内层循环和外层循环,并且可以在内层循环中直接退出外层循环,在编写时可以用<>定义标号。示例:

SQL> declare  2  result int;  3  begin  4  <<outer>>  5  for i in 1..100 loop  6  <<inter>>  7  for j in 1..100 loop  8  result:=i*j;  9  exit outer when result=1000;10  exit when result=500;11  end loop inter;12  dbms_output.put_line(result);13  end loop outer;14  dbms_output.put_line(result);15  end;16  /

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

0 0
原创粉丝点击