Oracle PL/SQL FOR LOOP(예제 포함)

⚡ 스마트 요약

Oracle PL/SQL의 FOR 루프는 하한과 상한 사이에서 정해진 횟수만큼 코드 블록을 실행합니다. 루프 변수는 암묵적으로 선언되고 자동으로 증가하므로 별도의 카운터가 필요하지 않으며, REVERSE 키워드를 사용하면 루프가 역순으로 실행됩니다.

  • 🔢 최고의 대상: FOR 루프는 무한 반복 조건보다는 반복 횟수가 정해진 조건에 더 적합합니다.
  • 📏 범위 : 하한과 상한은 루프가 실행되는 횟수를 정의합니다.
  • ⚙️ 암묵적 반박: 루프 변수는 자동으로 선언되고 자체적으로 증가합니다.
  • 🎯 범위: 루프 변수는 루프 내부에서만 존재합니다.
  • 🔄 뒤집다: 하한값 앞에 REVERSE를 추가하면 루프가 카운트다운 방식으로 작동합니다.
  • 🪜 중첩됨: 반복문은 중첩될 수 있으며, 내부 반복문은 외부 반복마다 완전히 실행됩니다.
  • 🚪 자동 종료: 변수가 범위를 벗어나면 루프가 자동으로 종료됩니다.

Oracle PL/SQL for 루프

FOR 루프란 무엇인가요?

"FOR 루프" 문은 다른 조건에 따라 코드를 실행하는 것이 아니라, 정해진 횟수만큼 코드를 실행하려는 경우에 가장 적합합니다.

이 반복문에서는 하한값과 상한값이 지정되며, 반복문 변수가 이 범위 내에 있는 동안 반복문이 실행됩니다.

반복문 변수는 자체적으로 증가하므로 명시적인 증가 연산이 필요하지 않습니다. 반복문 변수는 암묵적으로 선언되므로 따로 선언할 필요가 없습니다.

FOR <loop_variable> in <lower_limit> .. <higher_limit>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;

구문 설명:

  • 키워드 'FOR'는 반복문의 시작을 나타내고, 'END LOOP'는 반복문의 끝을 나타냅니다.
  • 루프 변수는 실행 부분이 실행되기 전에 매번 평가됩니다.
  • 실행 블록에는 실행해야 하는 모든 코드가 포함되어 있으며, 실행 가능한 모든 명령문을 포함할 수 있습니다.
  • `loop_variable`은 루프 실행 중에 암묵적으로 선언되며, 그 범위는 루프 내부로만 한정됩니다.
  • 루프 변수가 범위를 벗어나면 제어는 루프를 종료합니다.
  • lower_limit 앞에 'REVERSE' 키워드를 추가하면 루프를 역순으로 실행할 수 있습니다.

예 1 : 이 예제에서는 FOR 루프 문을 사용하여 1부터 5까지의 숫자를 출력합니다.

1부터 5까지 숫자를 출력하는 FOR 루프

BEGIN
dbms_output.put_line('Program started.');
FOR a IN 1 .. 5
LOOP
dbms_output.put_line(a);
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Code 설명 :

  • Code 2행: "프로그램이 시작되었습니다"라는 메시지를 출력합니다.
  • Code 3행: 키워드 'FOR'는 반복문의 시작을 나타내고, 루프 변수 'a'가 선언됩니다. 이제 'a'는 1부터 5까지의 값을 가집니다.
  • Code 5행: 'a' 값을 인쇄합니다.
  • Code 6행: 'END LOOP' 키워드는 실행 블록의 끝을 나타냅니다.
  • 5번째 줄은 'a'가 6에 도달할 때까지 계속 실행되며, 그 시점에서 조건이 충족되지 않아 제어가 루프를 종료합니다.
  • Code 7행: "프로그램이 완료되었습니다"라는 메시지를 출력합니다.

중첩 루프

반복문은 중첩될 수도 있습니다. 바깥쪽 반복문과 안쪽 반복문은 서로 다른 유형일 수 있습니다. 중첩된 반복문에서는 바깥쪽 반복문의 각 반복마다 안쪽 반복문이 완전히 실행됩니다.

중첩 루프 구조

LOOP --outer
<execution block starts>
LOOP --inner
<execution_part>
END LOOP;
<execution_block_ends>
END LOOP;

구문 설명:

  • 바깥쪽 고리 안에는 또 다른 고리가 하나 더 있습니다.
  • 반복문은 어떤 유형이든 가능하며, 실행 기능은 동일합니다.

예 1 : 이 예제에서는 FOR 루프 문을 사용하여 1부터 3까지의 숫자를 출력합니다. 각 숫자는 해당 값만큼 출력됩니다.

중첩 FOR 루프 예제 1부

중첩 FOR 루프 예제 2부

DECLARE
b NUMBER;
BEGIN
dbms_output.put_line('Program started');
FOR a IN 1..3
LOOP
b:= 1;
WHILE (a>=b)
LOOP
dbms_output.put_line(a);
b:= b+1;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code 설명 :

  • Code 2행: 변수 'b'를 'NUMBER' 데이터 형식으로 선언합니다.
  • Code 4행: "프로그램이 시작되었습니다"라는 메시지를 출력합니다.
  • Code 5행: 키워드 'FOR'는 반복문의 시작을 나타내고, 루프 변수 'a'가 선언됩니다. 이제 'a'는 1부터 3까지의 값을 가집니다.
  • Code 7행: 매번 'b' 값을 '1'로 재설정합니다.
  • Code 8행: 내부 while 루프 a>=b 조건을 확인합니다.
  • Code 10행: 위의 조건이 만족되는 한 'a'의 값을 출력합니다.
  • Code 14행: "프로그램이 완료되었습니다"라는 메시지를 출력합니다.

FOR 루프 및 역 FOR 루프

기본적으로 FOR 루프는 하한값에서 상한값까지 위로 카운트합니다. REVERSE 키워드를 추가하면 하한값을 유지하면서 아래로 카운트합니다.ping 제한값은 같은 순서로 표시됩니다. 두 가지 형식이 아래에 함께 표시되어 있으므로 차이점을 명확히 알 수 있습니다.

형태 헤더 값의 순서
오름차순 1..5의 경우 1, 2, 3, 4, 5
내림차순 역순으로 1 .. 5 5, 4, 3, 2, 1

REVERSE를 사용하더라도 하한값은 여전히 ​​상한값보다 먼저 기록된다는 점에 유의하십시오. 반복 방향만 변경됩니다. 반복 횟수를 미리 알 수 없는 루프의 경우, 기본 루프 더 나은 선택입니다.

자주 묻는 질문

아니요. FOR 루프는 변수를 암묵적으로 선언하며, 해당 변수는 루프 내부에서만 존재합니다. 루프 외부에서 같은 이름의 변수를 선언하더라도 루프에서 사용되는 변수에는 영향을 미치지 않습니다.

REVERSE 명령어를 사용하면 루프가 상한값에서 하한값으로 순차적으로 실행됩니다. 상한값 순서는 여전히 낮은 값에서 높은 값으로 유지되지만, 방문하는 값의 순서만 반전됩니다.

반복 횟수가 미리 정해져 있는 경우(예: 고정된 범위)에는 FOR 루프를 사용하십시오. 특정 조건이 충족되는 동안 루프가 계속되어야 하고 반복 횟수가 정해져 있지 않은 경우에는 WHILE 루프를 사용하십시오.

네, 기본 반복문이 두 고정된 값 사이를 카운트하는 경우 AI는 수동 카운터와 종료를 FOR 범위로 대체하여 코드를 더 간결하게 만들 수 있습니다. 범위가 원래와 일치하는지 확인하십시오.

아니요. 루프 변수는 루프 내부에서 읽기 전용이므로, 해당 변수에 값을 할당하면 컴파일 오류가 발생합니다. 실행 방식을 변경하려면 별도의 변수를 사용하거나 EXIT 문을 사용하여 루프를 종료하십시오.

이 게시물을 요약하면 다음과 같습니다.