Post

PL/SQL WHILE LOOP

1. Syntax

다음은 WITH 루프 문에 대한 구문이다.

1
2
3
4
WHILE condition
LOOP
    statements;
END LOOP;

WHILE의 조건은 TRUE, FALSE 또는 NULL로 평가하는 Boolean 식이다.

WHILE 루프 문은 WHILE 절의 조건이 TRUE로 평가되는 한 LOOP와 END LOOP 사이의 문을 계속 실행한다.

PL/SQL은 각 루프 반복 전에 WHILE 절의 조건을 평가한다. 조건이 TRUE이면 루프 본체가 실행된다. FALSE 또는 NULL일 경우 루프가 종료된다.

루프에 진입하기 전에 조건이 FALSE이면 WHILE 루프는 전혀 실행되지 않습니다. 이 동작은 루프 본문이 항상 한 번 실행되는 LOOP 문과 다르다.

루프를 조기에 종료하려면 EXIT 또는 EXIT WHEN 명령문을 사용한다.

2. WHILE loop examples

WHITH 루프 문을 사용하여 작동 방식을 살펴보는 몇 가지 예이다.

1) 단순 WHILE 루프 예제

다음 예에서는 WHILE 루프 문을 사용하는 방법을 보여 준다.

1
2
3
4
5
6
7
8
9
DECLARE
    n_counter NUMBER := 1;
BEGIN
    WHILE n_counter <= 5
    LOOP
        DBMS_OUTPUT.PUT_LINE( 'Counter : ' || n_counter );
        n_counter := n_counter + 1
    END LOOP;
END;

결과는 다음과 같다.

1
2
3
4
5
Counter : 1
Counter : 2
Counter : 3
Counter : 4
Counter : 5

이 예에서는 다음을 수행한다.

  • 첫째: 카운터가 0으로 초기화되었다.

  • 둘째: WHILE 절의 조건은 각 루프 반복 전에 평가되었다.

  • 셋째: 루프 본체 내부에서는 반복할 때마다 카운터가 하나씩 증가했다. 다섯 번 반복한 후 조건은 FALSE로 루프가 종료되는 원인이다.

2) EXIT WHEN 문에 의해 종료된 WHILE 루프 예제

다음 예는 추가 EXIT WHEN 문이 있다는 점을 제외하면 위의 예와 동일하다.

1
2
3
4
5
6
7
8
9
10
DECLARE
    n_counter NUMBER := 1;
BEGIN
    WHILE n_counter <= 5
        LOOP
            DBMS_OUTPUT.PUT_LINE( 'Counter : ' || n_counter );
            n_counter := n_counter + 1;
            EXIT WHEN n_counter = 3;
        END LOOP;
    END;

결과는 다음과 같다.

1
2
Counter : 1
Counter : 2

카운터가 3일 때 EXIT WHEN 절이 true로 평가되는 조건이다. 루프 본체는 종료되기 전에 두 번만 실행되었다.

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.