본문 바로가기

개발공부/SQL

PL/SQL 반복문 (4)

728x90
반응형

PL/SQL에서 사용하는 반복문

  • 조건 없이 반복 작업을 제공하기 위한 BASIC LOOP 문
  • COUNT를 기본으로 작업의 반복 제어를 제공한 FOR LOOP문
  • 조건을 기본으로 작업의 반복 제어를 제공하기 위한 WHILE LOOP문
  • LOOP를 종료하기 위한 EXIT문

 

4.1 BASIC LOOP문

 

가장 간단한 루프로, 구분 문자로 LOOP와 END LOOP 가 사용된다.

LOOP
   -- 반복할 문장들
   EXIT WHEN [조건문];
END LOOP;


위 구문에서 LOOP 키워드는 반복문의 시작을 나타내며, END LOOP;는 반복문의 끝을 나타냅니다. 

반복할 문장들은 LOOP와 END LOOP; 사이에 작성하며, 

EXIT WHEN 키워드를 사용하여 반복문을 빠져나갈 조건을 지정할 수 있습니다.

 

기본 LOOP는 LOOP에 들어갈 때 조건이 이미 일치했다 할지라도 적어도 한번은 문장이 실행된다.

 

<EX>

DECLARE
   v_counter NUMBER := 1;
BEGIN
   LOOP
      DBMS_OUTPUT.PUT_LINE(v_counter);
      v_counter := v_counter + 1;
      EXIT WHEN v_counter > 5;
   END LOOP;
END;
/

 

출력결과

1
2
3
4
5

 

 

 

4.2 FOR LOOP 문

 

반복회수가 정해진 반복문을 처리하기에 용이하다.

FOR index_counter
IN [REVERSE] lower_bound..upper_bound LOOP
	statement1;
    statement2;
    ...
END LOOP;

FOR LOOP 문에서 사용되는 인덱스는 정수로 자동 선언되므로, 따로 선언할 필요가 없다.

FOR LOOP 문은 LOOP를 반복할 때마다 자동적으로 1씩 증가 또는 감소한다.

REVERSE 는 1씩 감소함을 의미한다.

index_counter - upper_bound나 lower_bound에 도달할 때까지 LOOP를 반복함으로써 1씩 자동적으로 증가하거나 감소되는 값을 가진 암시적으로 선언된 정수

REVERSE - upper_bound에서 lower_bound까지 반복함으로써 인덱스가 1씩 감소되도록 한다.

lower_bound - index_counter 값의 범위에 대한 하단 바운드 값을 지정.

upper_bound - index_counter 값의 범위에 대한 상단 바운드 값을 지정.

 

FOR LOOP문으로 1부터 5까지 출력하는 예시

<EX>

DECLARE
BEGIN
    FOR N IN 1..5 LOOP
        DBMS_OUTPUT.PUT_LINE(N);
    END LOOP;
END;
/

출력결과

1
2
3
4
5

 

 

 

4.3 WHILE LOOP문

 

제어 조건이 TURE인 동안만 일련의 문장을 반복하기 위해 WHILE LOOP문을 사용한다.

조건은 반복이 시작될 때 체크되어 LOOP 내의 문장이 한 번도 수행되지 않을 경우도 있다.

LOOP를 시작할 때 조건이 FALSE면 반복 문장을 탈출한다.

WHILE condition LOOP
   statements;
END LOOP;
/

여기서 condition은 조건을 나타내는 부울 표현식이며, statements는 실행할 하나 이상의 PL/SQL 문입니다. 루프의 몸체는 한 번 이상 실행될 수 있으며, 조건이 거짓이면 루프를 빠져나와 다음 문장으로 이동합니다.

 


다음은 WHILE LOOP 문을 사용하여 1에서 5까지의 숫자를 출력하는 코드입니다.

DECLARE
   i NUMBER := 1;
BEGIN
   WHILE i <= 5 LOOP
      DBMS_OUTPUT.PUT_LINE(i);
      i := i + 1;
   END LOOP;
END;
/
728x90
반응형