Database/Oracle

Oracle - 반복문(LOOP, WHILE, FOR)

임빈영 2022. 4. 25. 18:01

Oracle 반복문

LOOP 문

1. 사용법

LOOP
처리문;
EXIT[조건];
END LOOP;

LOOP 문의 사용방법은 위와 같다. 

 

2. 예제

DECLARE
	NUM01 NUMBER := 1;

BEGIN 
	LOOP
	DBMS_OUTPUT.PUT_LINE(NUM01);   -- 변수 출력
	NUM01 := NUM01 + 1;   -- 변수 1씩 증가
	EXIT WHEN NUM01 > 10;   -- NUM01이 10보다 크면 반복문 종료
	END LOOP;
END;

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

 

1
2
3
4
5
6
7
8
9
10

앞서 설명한 코드의 결과는 위와 같다.

 

WHILE 문

1. 사용법

WHILE(조건)
LOOP
처리문;
END LOOP;

WHILE 문의 사용 방법은 위와 같다.

 

2. 예제

DECLARE
	NUM01 NUMBER := 1;

BEGIN 
	WHILE(NUM01 < 10)
	LOOP
	NUM01 := NUM01 + 1;
	DBMS_OUTPUT.PUT_LINE(NUM01);
	END LOOP;
END;

WHILE 문은 조건문이 WHILE 다음에 나오는 것만 제외하고 LOOP 문과 동일하다. WHILE 문에서도 LOOP 문과 같이 EXIT 구절을 사용해서 반복문을 빠져나갈 수 있다.

 

1
2
3
4
5
6
7
8
9

앞서 설명한 코드의 결과는 위와 같다.

 

FOR 문

1. 사용법

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

FOR 문의 사용 방법은 위와 같다.

 

2. 예제

BEGIN 
	FOR I IN 1..9
	LOOP
	DBMS_OUTPUT.PUT_LINE('안녕하세요.');   -- 출력
	END LOOP;
END;

FOR 문의 경우 인덱스 값을 선언문에 선언하지 않아도 되기 때문에, 반복문중에서 가장 간단하게 사용할 수 있다. 인덱스 값은 초기값에서 시작해서 최종 값까지 1씩 증가하게 되며, 인덱스는 참조는 가능하지만 변경을 할 수는 없다.

추가적으로, FOR 문에 REVERSE를 명시해주면 FOR문이 거꾸로 시작한다. ex) FOR I IN REVERSE 1..9

 

안녕하세요.
안녕하세요.
안녕하세요.
안녕하세요.
안녕하세요.
안녕하세요.
안녕하세요.
안녕하세요.
안녕하세요.

앞서 설명한 코드의 결과는 위와 같다.


출처

https://coding-factory.tistory.com/452

 

728x90