zoukankan      html  css  js  c++  java
  • oracle中的几种循环|转|

     http://blog.csdn.net/yxc369/article/details/1470780

    1,简单的循环
         以loop关键字开始,exit when子句确定何时推出循环,end loop子句为循环结束标志。
         declare
          pi       constant NUMBER(9,7) :=3.1415727
          radius   INTEGER(5);
          area     NUMBER(14,2);
         begin
          radius:=3;
          loop
           area:=pi*power(radius,2);
            insert into AREAS values (radius,area);
           radius:=radius+1;
           exit when area >100;
          end loop;
         end;
         
       2,简单的游标循环
        %FOUND       可在游标中取一个记录
        %NOTFOUND    不能从游标中再取一个记录
        %ISOPEN      游标已经打开
        %ROWCOUNT       迄今为止从游标中取出的行数
        
        exit when rad_cursor%NOTFOUND;/*如果游标中取不到值则推出循环*/ 
        
       3,FOR循环
        for循环是指循环次数已经指定的循环
         declare
          pi       constant NUMBER(9,7) :=3.1415727
          radius   INTEGER(5);
          area     NUMBER(14,2);
         begin
          for radius in 1..7 loop
             area:=pi*power(radius,2);
            insert into AREAS values (radius,area);
          end loop;
         end;    
       
       4,游标For循环
         declare
          pi       constant NUMBER(9,7) :=3.1415727
          area     NUMBER(14,2);
          cursor rad_cursor is
              select * from RADIUS_VAS;
              
         begin   
          for rad_val in rad_cursor
           loop
             area:=pi*power(rad_val.radius,2);
            insert into AREAS values (rad_val.radius,area);
           end loop;
         end;
      5,WHILE循环
         declare
          pi       constant NUMBER(9,7) :=3.1415727
          radius   INTEGER(5);
          area     NUMBER(14,2);
         begin
          radius:=3;
          while radius<=7
          loop
             area:=pi*power(radius,2);
            insert into AREAS values (radius,area);
             radius:=radius+1;
          end loop;
         end;       
    ---------------------------------------------------------------------------------------------------
    CASE语句
         declare
          pi       constant NUMBER(9,7) :=3.1415727
          area     NUMBER(14,2);
          cursor rad_cursor is
            select * from RADIUS_VALS;
          rad_val rad_cursor%ROWTYPE;
          
         begin
          open rad_cursor;
          loop
            fetch rad_cursor into rad_val;
            exit wehn rad_cursor%NOTFOUND;
             area:=pi*power(rad_val.radius,2);
             case
              when rad_val.Radius=3 then insert into AREAS values (rad_val.radius,area);
             when rad_val.Radius=4 then insert into AREAS values (rad_val.radius,area); 
             when rad_val.Radius=10 then insert into AREAS values (0,0);
             else raise CASE_NOT_FOUND;
            end case;
          end loop;
         end; 
    ---------------------------------------------------------------------------------------------------
    exception异常:
      exception
        when ZERO_DIVIDE
         then insert into AREAS values(0,0);
      当PL/SQL块产生一个错误时,它会扫描定义的异常处理过程。 ZERO_DIVIDE是一个系统定义的异常。
      可以用when other子句处理在异常处理部分未定义过的异常。 

  • 相关阅读:
    初学Java8:通过JDBC实现简易人力资源管理系统
    Java典型题目 >>>>>>长期更新
    初学Java7:简单设计人力资源管理系统
    初学Java6:Java OOP基础语法总结
    初学Java5:模拟注册登录幸运抽奖全过程
    could not initialize proxy
    jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.
    分页存储过程
    java 成长之路[轉載u]
    UploadHandleServlet
  • 原文地址:https://www.cnblogs.com/sumsen/p/2547128.html
Copyright © 2011-2022 走看看