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
반응형