oracle函数中循环的写法

      在PL/SQL中最简单格式的循环语句是基本循环语句,这种循环语句以LOOP开始,以END LOOP结束,其语法如下: 
[sql] view plaincopy
LOOP   
    statement1;  
    ...  
    EXIT [WHEN condition];  
注意:当编写基本循环时,一定要包含EXIT语句,否则PL/SQL会陷入死循环。

当使用基本循环时,大家还应该定义循环控制变量,并且在循环体内修改循环控制变量的值。下面是使用基本循环的示例:
[sql] view plaincopy
CREATE TABLE temp(cola INT);  
  
DECLARE   
    i INT :=1;  
BEGIN   
     LOOP   
        INSERT INTO temp  VALUES(i);    
        EXIT WHEN i=10;  
        i:=i+1;  
     END LOOP;  
END;     

2.WHILE循环
    基本循环至少要执行一次循环体内的语句,而对于WHILE循环来说,只有条件为TRUE时,才会执行循环体内的语句。WHILE循环以WHILE....LOOP开始,以END  LOOP 结束,其语法如下:
[sql] view plaincopy
WHILE condition LOOP  
   statement1;  
   statement2;  
   ...  
END LOOP;   
下面是使用WHILE循环的例子
[sql] view plaincopy
DECLARE   
    i INT :=1;  
BEGIN   
     WHILE i<=10 LOOP  
        INSERT INTO temp VALUES(1);      
        i:=i+1;  
      END LOOP;  
END;   

3.FOR循环
当使用基本循环或WHILE循环时,需要定义循环控制变脸,并且循环控制变量不仅可以使用NUMBER类型,也可以使用其它数据类型;而当使用FOR循环时,Oracle会隐含定义循环控制变量。FOR循环的语法如下:
[sql] view plaincopy
----FOR循环的语法格式  
FOR  counter in [REVERSE]  
   lower_bound .. upper_bound LOOP  
      statement1;  
      statement2;  
      ...  
  END LOOP;   
如上所示,counter是循环控制变量,并且该变量由Oracle隐含定义,不需要显示定义:lower_bound和upper_bound分别对应于循环控制变量的上界值和下界值。默认情况下,当使用FOR循环时,每次循环时,循环控制变量会自动增一;如果指定REVERSE,那么每次循环时,循环控制变量会自动减一。使用FOR循环的示例如下:
[sql] view plaincopy
BEGIN       
FOR i  IN REVERSE  1 .. 10  LOOP  
     INSERT INTO temp VALUES(i);  
    END LOOP;   
END;      
如上所示,当执行以上PL/SQL块时,会为TEMP表插入10条记录。因为指定了REVERSE选项,所以被插入数据的顺序为10,9...,14、嵌套循环
  嵌套循环是指在一个循环语句之中,嵌入另一个循环语句,而标号(label)则用于标记嵌套块或嵌套循环。通过在嵌套循环中使用标号,可以区分内层循环和外层循环并且可以在内存循环中直接退出外层循环.在编写PL/SQL块时,可以使用<<lable_name>>定义标号,示例如下:
[sql] view plaincopy
DECLARE   
   result INT;  
BEGIN   
      <<outer1>>     
      FOR i IN 1..100 LOOP  
        <<inner1>>  
       FOR j IN 1..100 LOOP  
           result:=i*j;  
           EXIT outer1 WHEN result=1000;  
          EXIT WHEN result=500;  
        END LOOP inner1;  
        dbms_output.put_line(outer==||result);   
      END LOOP outer1;  
         dbms_output.put_line(result);   
END;  

oracle函数中循环的写法,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。