nickjoIT
기본 LOOP 본문
--기본 LOOP
DECLARE
l_cnt NUMBER := 1;
BEGIN
LOOP
EXIT WHEN l_cnt >= 100;
DBMS_OUTPUT.PUT_LINE('cnt: ' || l_cnt);
l_cnt := l_cnt + 1;
END LOOP;
END;
/
--------------------------------------------------------------------
--중첩 LOOP
DECLARE
--subtype을 이용한 새로운 변수 타입 설정
SUBTYPE count_type IS NUMBER(3);
l_cnt count_type NOT NULL := 0;
BEGIN
--goto 활용을 위한 outer 레이블 설정
<<outer>>
LOOP
DBMS_OUTPUT.PUT_LINE('outer loop1');
--inner 레이블 설정
<<inner>>
LOOP
l_cnt:=l_cnt+1;
DBMS_OUTPUT.PUT_LINE('inner loop:count='||l_cnt);
--l_cnt가 5가 되면 outer 레이블 밖으로 빠져나감
EXIT outer WHEN l_cnt=5;
--l_cnt가 3이면 이전 loop 밖으로 빠져나감
EXIT WHEN l_cnt=3;
END LOOP; --END inner LOOP
--l_cnt가 100이 되면 이전 loop 밖으로 빠져나감
EXIT WHEN l_cnt>=100;
DBMS_OUTPUT.PUT_LINE('outer loop2:l_cnt='||l_cnt);
END LOOP; --END outer LOOP
DBMS_OUTPUT.PUT_LINE('out of loop:l_cnt='||l_cnt);
--final 레이블로 분기
GOTO final;
DBMS_OUTPUT.PUT_LINE('Never Executed!!');
--final 레이블 설정
<<final>>
DBMS_OUTPUT.PUT_LINE('Final');
RETURN;
DBMS_OUTPUT.PUT_LINE('Never Executed!!');
END;
/