WHILE문

    일반적인 프로그래밍 언어에서 대표적인 반복문을 꼽으라면 WHILE문과 FOR문을 들 수 있다. 오라클에서도 역시 이 두 문장을 제공하는데, 먼저 WHILE문에 대해 살펴 보자.

        WHILE 조건
         LOOP
          처리문;
        END LOOP;
    

    WHILE문은 LOOP문과 비슷하지만 WHILE 다음에 조건을 붙여 해당 조건에 만족할 때만 루프를 돌면서 로직을 처리한다. WHILE문을 사용해 구구단 3단을 출력해 보자.

    입력

        DECLARE
          vn_base_num NUMBER := 3;
          vn_cnt      NUMBER := 1;
        BEGIN
        WHILE  vn_cnt <= 9            -- vn_cnt가 9보다 작거나 같을 때만 반복 처리
        LOOP
          DBMS_OUTPUT.PUT_LINE (vn_base_num || '*' || vn_cnt || '= ' || vn_base_num * vn_cnt);
          vn_cnt := vn_cnt + 1;      -- vn_cnt 값을 1씩 증가
        END LOOP;
        END;
    

    결과

        3*1= 3
        3*2= 6
        3*3= 9
        3*4= 12
        3*5= 15
        3*6= 18
        3*7= 21
        3*8= 24
        3*9= 27
    

    WHILE 다음에 조건 처리를 한 부분만 제외하면 다른 부분은 LOOP문과 같지만, LOOP문과 달리 vn_cnt 값이 9보다 작거나 같은 경우라는 조건을 주었다는 점을 눈여겨 보자. LOOP문에서는 루프를 빠져 나가는 조건을 주었지만, WHILE문에서는 루프를 수행하는 조건을 준 것이다.

    WHILE문에서도 루프를 돌다가 특정 조건에 부합하면 EXIT를 써서 루프를 빠져나올 수 있다.

    입력

        DECLARE
          vn_base_num NUMBER := 3;
          vn_cnt      NUMBER := 1;
        BEGIN
    
          WHILE  vn_cnt <= 9           -- vn_cnt가 9보다 작거나 같을 때만 반복 처리
          LOOP
             DBMS_OUTPUT.PUT_LINE (vn_base_num || '*' || vn_cnt || '= ' || vn_base_num * vn_cnt);
             EXIT WHEN vn_cnt = 5;     -- vn_cnt 값이 5가 되면 루프 종료
             vn_cnt := vn_cnt + 1;     -- vn_cnt 값을 1씩 증가
          END LOOP;
        END;
    

    결과

        3*1= 3
        3*2= 6
        3*3= 9
        3*4= 12
        3*5= 15
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.