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;/*如果游标中取不到值则推出循环*/
%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