Oracle 循环相关

1.简单的循环
以loop关键字开始, exit when子句退出循环, end loop子句为循环结束标志。
DECLARE
   PI   CONSTANT NUMBER (9, 7) := 3.1415926;
   RADIUS        INTEGER (5);
   AREA          NUMBER (14, 2);
BEGIN
    RADIUS := 3;
    LOOP
      AREA := PI * POWER (RADIUS, 2);
      DBMS_OUTPUT.put_line ('半径:' || RADIUS || '; 面积:'|| AREA);
      RADIUS := RADIUS + 1;
      EXIT WHEN AREA > 100;
    END LOOP;
END;

2,简单的游标循环
    %FOUND              可在游标中取一个记录
    %NOTFOUND        不能从游标中再取一个记录
    %ISOPEN              游标已经打开
    %ROWCOUNT       迄今为止从游标中取出的行数
    
    exit when rad_cursor%NOTFOUND;/*如果游标中取不到值则推出循环*/ 

3.FOR循环
DECLARE
   PI   CONSTANT NUMBER (9, 7) := 3.1415926;
   RADIUS        INTEGER (5);
   AREA          NUMBER (14, 2);
BEGIN
   FOR RADIUS IN 1 .. 7
   LOOP
      AREA := PI * POWER (RADIUS, 2);
      DBMS_OUTPUT.put_line ('半径:' || RADIUS || '; 面积:'|| AREA);
   END LOOP;
END;

4.游标循环
DECLARE
   PI   CONSTANT NUMBER (9, 7) := 3.1415926;
   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);
      DBMS_OUTPUT.put_line ('半径:' || RAD_VAL.RADIUS|| '; 面积:' || AREA);
   END LOOP;
END;

5.WHILE循环
DECLARE
   PI   CONSTANT NUMBER (9, 7) := 3.1415926;
   RADIUS        INTEGER (5);
   AREA          NUMBER (14, 2);
BEGIN
   RADIUS := 3;
   WHILE RADIUS <= 7
   LOOP
      AREA := PI * POWER (RADIUS, 2);
      DBMS_OUTPUT.PUT_LINE ('半径:' || RADIUS || '; 面积:' || AREA);
      RADIUS := RADIUS + 1;
   END LOOP;
END;

6.CASE语句
DECLARE
   pi   CONSTANT NUMBER (9, 7) := 3.1415926;
   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 WHEN rad_cursor%NOTFOUND;
      area := pi * POWER (rad_val.radius, 2);
 
      CASE
         WHEN rad_val.Radius = 3
         THEN
            DBMS_OUTPUT.put_line ('半径:' || rad_val.radius || '; 面积:' || area);
         WHEN rad_val.Radius = 4
         THEN
            DBMS_OUTPUT.put_line ('半径:' || rad_val.radius || '; 面积:' || area);
         WHEN rad_val.Radius = 10
         THEN
            DBMS_OUTPUT.put_line ('半径:' || rad_val.radius || '; 面积:' || area);
         ELSE
            RAISE CASE_NOT_FOUND;
      END CASE;
   END LOOP;
END;
 
 
 http://blog.csdn.net/yxc369/article/details/1470780
posted @ 2016-04-08 10:36  阆苑仙葩  阅读(177)  评论(0)    收藏  举报