본문 바로가기

DATABASE/PL_SQL 기초

04. 반복 제어문

반복문은 특정 작업을 반복하여 수행하고자 할 때 사용한다. PL/SQL에서는 기본LOOP, WHILE LOOP, FOR LOOP, Cusor FOR LOOP 반복문을 제공한다.

 

1) 기본 LOOP -  기본 반복문

2) WHILE LOOP - 특정 조건식의 결과를 통해 반복 수행

3) FOR LOOP - 반복 횟수를 정하여 반복 수행

4) Cusor FOR LOOP - 커서를 활용한 반복 수행

 

반복 수행을 중단시키거나 특정 반복 주기를 건너뛰는 명령어도 보자.

1) EXIT - 수행중인 반복 종료

2) EXIT - WHEN : 반복 종료를 위한 조건식을 지정하고 만족하면 반복 종료

3) CONTINUE - 수행 중인 반복의 현재 주귀를 건너뜀

4) CONTINUE - WHEN : 특정 조건식을 지정하고 조건식을 만족하면 현재 반복 주기를 건너뜀

 

기본 LOOP

반복을 위한 별다른 조건 없이 반복할 작업 내용을 지정한다.

LOOP

 반복 수행 작업;

END LOOP;

기본LOOP문은 반복의 종료 시점이나 조건식을 따로 명시하지 않으므로 지정한 작업을 무한히 반복 수행하게 된다. 이러한 현상을 무한 루프라고 한다. 하지만 수행 작업을 무한 반복하는 경우는 많지않으므로 대부분의 기본LOOP문은 EXIT명령어와 함께 작성한다.

 

WHILE LOOP

반복 수행 여부를 결정하는 조건식을 먼저 지정한 후 조건식의 결과 값이 true일때 조건을 반복하고 false가 되면 반복을 끝낸다.

WHILE 조건식 LOOP

 반복 수행 작업 ; 

END LOOP;

반복 수행이 시작되기 전에 조건식을 검사하므로 조건식의 결과 값에 따라 단 한번도 반복 수행되지 않을 수도 있다!

 

FOR LOOP 

반복의 횟수를 지정할 수 있는 반복문으로 지정한 시작 값부터 1씩 증가하여 종료 값에 이를 때까지 작업을 반복 수행한다. FOR키워드 다음에 작성한 i는 반복 수행 중의 시작 값과 종료 값 사이의 현재 숫자가 저장되는 특수한 변수로 '카운터'라고 한다. 카운터는 선언부에서 정의하지 않고 FOR LOOP문에서 바로 정의하여 사용한다. FOR LOOP문 안에서만 사용 가능하며, 값을 임의로 할당할 수 없고 현재 저장되어 있는 값을 참조만 할 수 있다.

FOR i IN 시작값 .. 종료값 LOOP

 반복 수행 작업;

END LOOP;

시작값에서 종료값을 역순으로 반복하고 싶다면 REVERSE 키워드를 사용하면 된다. 하지만 FOR LOOP의 시작값과 종료값의 위치는 변하지 않는다.

FOR i IN REVERSE 시작값 .. 종료값 LOOP

 반복 수행 작업;

END LOOP;

 

CONTINUE문, CONTINUE-WHEN문

반복 수행 중 CONTINUE가 실행 되면 현재 반복 주기에 수행해야 할 남은 작업을 건너뛰고 다음 반복 주기로 바로 넘어가는 효과가 있다. EXIT, EXIT-WHEN문과 만찬가지로 CONTINUE는 즉시 다음 반복 주기로 넘어가고, CONTINUE-WHEN문은 특정 조건식을 만족할 때 다음 반복 주기로 넘어가게 된다.

BEGIN 

    FOR i IN 0..4 LOOP

        CONTINUE WHEN MOD(i, 2) = 1; // 홀수이면 CONTINUE 이므로 1,3일때 작동X

        DBMS_OUTPUT.PUT_LINE('현재 i의 값 : ' || i );

    END LOOP;

END;

/

 

조건 제어문, 반복 제어문 외에도 GOTO문과 NULL문과 같은 순차 제어문도 있다. PL/SQL프로그래밍에서 크게 중요한 부분이 아니어서 생략한다.

 

'DATABASE > PL_SQL 기초' 카테고리의 다른 글

03. 조건 제어문  (1) 2024.04.07
02. 변수와 상수  (0) 2024.04.07
01. PL/SQL 구조  (0) 2024.04.07