Programming/Oracle

oracle 반복문(LOOP, FOR LOOP, WHILE LOOP) 사용 방법 및 예시

Jan92 2024. 5. 6. 01:16

오라클 반복문 사용 방법 및 예시(LOOP, FOR LOOP, WHILE LOOP)

LOOP, FOR LOOP, WHILE LOOP 사용 방법 및 예시

 

해당 포스팅은 오라클 반복문(LOOP, FOR LOOP, WHILE LOOP)을 사용하는 방법 및 간단한 예시를 정리한 내용입니다.

 

oracle에서 반복문은 PL/SQL(Procedural Language/Structured Query Language)을 사용하여 수행되기 때문에 프로시저나 함수 등을 작성할 때도 활용될 수 있는데요.

아래 내용을 통해 oracle에서 사용되는 반복문인 'LOOP', 'FOR LOOP', 'WHILE LOOP' 각각의 개념과 특징, 그리고 예시를 살펴보겠습니다.

 


LOOP

/* LOOP 기본 구조 */
LOOP
    --반복 작업 수행
    EXIT WHEN 조건;
END LOOP;

(LOOP 기본 구조)

 

LOOP 반복문은 'EXIT WHEN 조건' 절의 조건이 참(TRUE)인 경우 반복문을 빠져나가는 구조입니다.

때문에 'EXIT WHEN 조건' 절이 누락되는 경우 반복문이 무한 루프에 빠진다는 점을 주의해야 합니다.

 

 

/* LOOP 예시 */
DECLARE
    counter NUMBER := 1;
BEGIN
    LOOP
        DBMS_OUTPUT.PUT_LINE('현재 숫자: ' || counter);
        counter := counter + 1;
        EXIT WHEN counter > 10;
    END LOOP;
END;

(LOOP 반복문 간단한 예시)

 

* DBMS_OUTPUT.PUT_LINE 출력이 안 되는 경우 'SET serveroutput ON;' 명령어를 통해 해당 기능을 켜주면 됩니다.

 


FOR LOOP

/* FOR LOOP 기본 구조 */
FOR i IN [REVERSE] 시작값..종료값 LOOP
    -- 반복 작업 수행
END LOOP;

(FOR LOOP 기본 구조)

 

FOR LOOP 반복문의 경우 선언부에서 인덱스 값을 선언하지 않고, 반복문에서 바로 사용할 수 있다는 특징이 있습니다.

인덱스의 값은 시작 값에서 시작하여 종료 값까지 1씩 증가하게 되며, 인덱스 값에 대한 참조는 가능하지만 변경을 할 수는 없다는 특징이 있습니다.

 

'FOR i IN REVERSE 1..10 LOOP'와 같이 'IN' 다음 'REVERSE'를 추가로 입력하는 경우 인덱스 값이 종료 값부터 시작 값까지 1씩 감소하는 반복문을 사용할 수 있습니다.

 

 

/* FOR LOOP 예시 */
BEGIN
    FOR counter IN 1..10 LOOP
        DBMS_OUTPUT.PUT_LINE('현재 숫자: ' || counter);
    END LOOP;
END;


/* FOR LOOP REVERSE 예시 */
BEGIN
    FOR counter IN REVERSE 1..10 LOOP
        DBMS_OUTPUT.PUT_LINE('현재 숫자: ' || counter);
    END LOOP;
END;

(FOR LOOP 반복문 간단한 예시)

 


WHILE LOOP

/* WHILE LOOP 기본 구조 */
WHILE condition LOOP
    -- 반복 작업 수행
END LOOP;

(WHILE LOOP 기본 구조)

 

WHILE LOOP 반복문은 주어진 조건(condition)을 확인 후 조건이 참(TRUE) 일 경우 수행되며, 조건이 거짓(FALSE)이 되면 반복문이 수행되지 않고 종료됩니다.

 

조건을 먼저 확인 후 반복 작업을 동작할지 여부를 결정하기 때문에 반복 작업이 한 번도 수행되지 않을 수 있다는 특징이 있습니다.

또한 기본 LOOP 문과 같이 'EXIT WHEN 조건' 절을 사용하여 반복문을 빠져나갈 수도 있습니다.

 

 

/* WHILE LOOP 예시 */
DECLARE
    counter NUMBER := 1;
BEGIN
    WHILE(counter <= 10) LOOP
        DBMS_OUTPUT.PUT_LINE('현재 숫자: ' || counter);
        counter := counter + 1;
    END LOOP;
END;

(WHILE LOOP 반복문 간단한 예시)

 

 

 

 

< 함께 보면 좋은 자료 >

2024.05.04 - [Programming/Oracle] - oracle 사용자 정의 함수 function 생성 및 실행 방법