CREATE TABLE AREAS

(

RADIUS NUMBER(5),

AREA NUMBER(14,2)

);
方法一:使用 goto

DECLARE

pi CONSTANT NUMBER (9, 7) := 3.1415927;

radius INTEGER (5);

area NUMBER (14, 2);

BEGIN

radius := 0;


LOOP


<<here>>

radius := radius + 1;


IF radius = 4

THEN

GOTO here;

ELSE

area := pi * POWER (radius, 2);


INSERT INTO areas

VALUES (radius, area);


EXIT WHEN area > 100;

END IF;

END LOOP;


COMMIT;

EXCEPTION

WHEN OTHERS

THEN

ROLLBACK;

RAISE;

END;
-- 方法二:使用 exception

-- 利用系统 exception

DECLARE

pi CONSTANT NUMBER (9, 7) := 3.1415927;

radius INTEGER (5);

area NUMBER (14, 2);

some_variable NUMBER (14, 2);

BEGIN

radius := 0;


LOOP

BEGIN

radius := radius + 1;

some_variable := 1 / (radius - 4);

area := pi * POWER (radius, 2);


INSERT INTO areas

VALUES (radius, area);


EXIT WHEN area > 100;

EXCEPTION

WHEN ZERO_DIVIDE

THEN

NULL;

END;

END LOOP;


COMMIT;

EXCEPTION

WHEN OTHERS

THEN

ROLLBACK;

RAISE;

END;