nickjoIT

기본 LOOP 본문

DB/oracle

기본 LOOP

nickjo 2017. 5. 25. 09:44

--기본 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;

/

'DB > oracle' 카테고리의 다른 글

For Loop  (0) 2017.05.26
While Loop  (0) 2017.05.26
제어문  (0) 2017.05.25
함수 생성  (0) 2017.05.24
프로시저 삭제  (0) 2017.05.24
Comments