DBMS

[ORACLE] (PL/SQL) 오라클 반복문 (LOOP, WHILE, FOR)

dev.mk 2020. 6. 30. 17:42
반응형

PL/SQL에서의 반복문 종류는 LOOP문, WHILE문, FOR문이 있다.

LOOP문

--문법
LOOP
처리문;
EXIT[조건];
END LOOP;
--예제
DECLARE
NUM NUMBER :=1;

BEGIN
    LOOP
    DBMS_OUTPUT.PUT_LINE(NUM); --출력
    NUM := NUM+1; --NUM = NUM +1
    EXIT WHEN NUM >5; --NUM이 5보다 크면 LOOP종료
    END LOOP;

END;

결과

1
2
3
4
5

LOOP문 사용법은 위와같다. 반복문은 특정조건까지만 반복하며 로직을 수행하는데 LOOP의 반복문은 EXIT[WHEN 조건]; 이라는 구절에서 실행된다. 따라서 EXIT를 누락하면 해당 LOOP는 무한루프에 빠지게 되니 사용하실 때 주의해야 한다.

 

WHILE문

--문법
WHILE 조건
LOOP
처리문;
END LOOP;
--예제
DECLARE
NUM NUMBER :=1;

BEGIN
    WHILE(NUM<5) --NUM이 5보다 작을때까지 LOOP실행
    LOOP
    DBMS_OUTPUT.PUT_LINE(NUM); --출력
    NUM := NUM+1; --NUM = NUM +1
    END LOOP;

END;

결과

1
2
3
4

WHILE문은 조건문이 WHILE 다음으로 조건이 갔다는 부분에서만 다르고 나머지는 LOOP와 같다. WHILE문에서도 LOOP처럼 EXIT를 써서 루프를 빠져나가는 방법도 사용할 수 있다.

 

FOR문

--문법
FOR 증감 변수 IN 초기값..최종값
LOOP
처리문;
END LOOP;

 

DECLARE
	VAL_NUM NUMBER := 1;
BEGIN
    FOR I IN 1..9
    LOOP
    VAL_NUM := VAL_NUM + 1;
    DBMS_OUTPUT.PUT_LINE(VAL_NUM); --출력
    END LOOP;

END;

결과

2
3
4
5
6
7
8
9
10

FOR문은 인덱스값을 DECLARE에서 선언하지 않아도 되므로 가장 반복문중에서 가장 간결하게 사용할 수 있다. 인덱스 값은 초기값에서 시작해 최종값까지 1씩 증가하게 되며 인덱스는 참조는 가능하지만 변경을 할 수는 없다. FOR문에 REVERSE를 명시해주면 FOR문이 거꾸로 시작된다. (EX : FOR I IIN REVERSE 1..9)

 

 

본문의 출처 https://coding-factory.tistory.com/452?category=758273

반응형