더북(TheBook)

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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.