博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle中的几种循环|转|
阅读量:5784 次
发布时间:2019-06-18

本文共 2075 字,大约阅读时间需要 6 分钟。

 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子句处理在异常处理部分未定义过的异常。 

你可能感兴趣的文章
台湾dotnet程序员之家
查看>>
[!] Could not automatically select an Xcode project. Specify one in your Podfile like so: proje...
查看>>
spring中的aop注解(整合junit测试)
查看>>
(转) AJAX POST&跨域 解决方案 - CORS
查看>>
cookie封装函数与使用方法(转)
查看>>
Keyboard的显示与隐藏
查看>>
设计模式(一)---单例模式
查看>>
How to extract a complete list of extension types within a directory?
查看>>
如何无密码登陆远程机器?
查看>>
图论4——多源最短路径
查看>>
java第九次作业:第九章例题3个
查看>>
hadoop(三):hdfs 机架感知
查看>>
bitset
查看>>
购物车
查看>>
移动端范围拖动选择效果
查看>>
幂率定律及绘制Power-law函数
查看>>
C#并行和多线程编程_(1)认识Parallel
查看>>
继续修行Python基础总结(注释|变量)
查看>>
基于队列且线程安全的日志打印控件
查看>>
提高程序员工作效率的5个工具
查看>>