while 루프 인 Oracle 예제가 포함된 PL/SQL

⚡ 스마트 요약

Oracle PL/SQL의 WHILE 루프는 특정 조건이 참인 동안 코드 블록을 반복 실행합니다. 이는 진입 조건 검사 루프로, 각 반복 전에 종료 조건을 검사하므로 코드 블록이 한 번도 실행되지 않을 수 있으며, 명시적인 EXIT 키워드가 필요하지 않습니다.

  • 🔁 목적 : WHILE 루프는 조건이 참인 동안 실행되고 조건이 거짓이 되는 즉시 중지됩니다.
  • 🚦 입장 확인: 조건은 블록 실행 전에 테스트되므로 루프는 한 번도 실행되지 않을 수 있습니다.
  • 🧮 출구가 필요 없습니다: 조건은 각 반복마다 암묵적으로 검증되므로 명시적인 종료 명령은 필요하지 않습니다.
  • 🔢 카운터 : 블록 안의 변수가 바뀌어야만 조건이 결국 거짓이 됩니다.
  • ♾️ 무한한 위험: 카운터가 조건을 만족시키지 못하면 루프는 영원히 실행됩니다.
  • ⚖️ vs 대: 반복 횟수를 알 수 없을 때는 WHILE 문을 사용하고, 반복 횟수가 정해져 있을 때는 FOR 문을 사용하십시오.
  • 🚪 조기 퇴원: EXIT WHEN을 사용하면 조건이 거짓이 되기 전에 WHILE 루프를 종료할 수 있습니다.

Oracle PL/SQL While 루프

PL/SQL while 루프란 무엇인가요?

The While 루프 PL/SQL에서 `exit`는 기본 반복문과 유사하게 작동하지만, 종료 조건이 반복문의 맨 처음에 있다는 점이 다릅니다. 이는 진입 조건 검사형 반복문처럼 작동하며, 종료 조건이 실행 전에 확인되므로 조건이 충족될 경우에만 실행 블록이 실행됩니다.

이 코드는 조건을 매번 암묵적으로 검증하기 때문에 루프를 종료하기 위해 'EXIT' 키워드를 명시적으로 사용할 필요가 없습니다.

PL/SQL While 루프 구문

WHILE <EXIT condition>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;
  • 키워드 'WHILE'은 반복문의 시작을 나타내고, 'END LOOP'는 반복문의 끝을 나타냅니다.
  • 종료 조건은 실행 부분이 실행되기 전에 매번 평가됩니다.
  • 실행 블록에는 실행해야 할 모든 코드가 포함되어 있습니다.
  • 실행 부분에는 실행 가능한 모든 명령문이 포함될 수 있습니다.

예 Oracle PL/SQL While 루프

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

PL/SQL While 루프 예제
PL/SQL While 루프 예제
DECLARE
a NUMBER := 1;
BEGIN
dbms_output.put_line('Program started');
WHILE (a <= 5)
LOOP
dbms_output.put_line(a);
a:= a+1;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code 설명 :

  • Code 2행: 변수 'a'를 'NUMBER'로 선언하고 '1'로 초기화합니다.
  • Code 4행: "프로그램이 시작되었습니다"라는 메시지를 출력합니다.
  • Code 5행: 키워드 'WHILE'은 반복문의 시작을 나타내며, 'a'의 값이 5 이하인지 확인합니다.
  • Code 7행: 'a' 값을 인쇄합니다.
  • Code 8행: 'a'의 값을 1만큼 증가시킵니다.
  • Code 9행: 'END LOOP' 키워드는 실행 블록의 끝을 나타냅니다.
  • 7번과 8번 줄은 'a' 값이 6에 도달할 때까지 계속 실행되며, 그 시점에서 조건은 FALSE를 반환하고 제어 흐름이 종료됩니다. 고리.
  • Code 10행: "프로그램이 완료되었습니다"라는 메시지를 출력합니다.

while 루프 vs. for 루프 vs. 기본 루프

PL/SQL은 세 가지 유형의 반복문을 제공하며, 적절한 반복문을 선택하면 코드를 명확하게 유지할 수 있습니다. WHILE 반복문은 조건에 따른 반복 실행에 적합하고, 나머지 두 유형은 고정된 횟수 반복이나 명시적으로 제어되는 종료 조건에 적합합니다.

고리 종료 기준 가장 잘 사용되는 경우
WHIE 루프 맨 위의 조건이 거짓이 됩니다 반복 횟수는 알 수 없습니다.
FOR 루프 카운터가 범위 끝에 도달했습니다 반복 횟수는 알려져 있습니다.
기본 루프 블록 내에서 명시적으로 종료합니다. 출구는 수동으로 제어됩니다.

WHILE 루프는 조건문을 시작 부분에서 검사하기 때문에, 조건이 처음부터 거짓이면 본문이 한 번도 실행되지 않을 수 있습니다. 이는 본문이 항상 최소 한 번 이상 실행되는 일반 루프와의 핵심적인 차이점입니다.

무한 while 루프를 피하는 방법

WHILE 루프는 제어 변수가 종료 조건으로 향하는지에 전적으로 의존합니다. 만약 제어 변수가 종료 조건으로 향하지 않으면 루프는 무한히 실행되고 세션이 멈춥니다. 이를 방지하는 세 가지 습관은 다음과 같습니다.

  • 매 반복마다 카운터를 변경합니다. 예제에서는 반복문 안에서 'a' 값을 증가시키는데, 해당 줄을 제거하면 무한 루프에 빠지게 됩니다.
  • 경계를 시험해 보세요. 이상적인 경우뿐만 아니라 시작 값에 대해서도 해당 조건이 실제로 거짓이 될 수 있음을 확인하십시오.
  • 안전 출구 표시를 추가하세요. 데이터 기반 루프의 경우, 최대 반복 횟수에 대한 EXIT WHEN 조건은 예상치 못한 값에 대한 안전장치 역할을 합니다.

반복 횟수가 확실히 고정되어 있는 경우, FOR 루프는 카운터가 자동으로 관리되므로 위험을 완전히 제거합니다.

자주 묻는 질문

네. 조건문이 블록 실행 전에 확인되기 때문에, 시작 시 조건이 거짓이면 본문은 실행되지 않습니다. 이러한 진입 조건 확인이 항상 한 번 실행되는 일반 반복문과의 주요 차이점입니다.

반복문 내부의 변수가 매 반복마다 종료 조건에 가까워지도록 하세요. 데이터 기반 반복문의 경우, 최대 카운트에 대해 EXIT WHEN 조건을 추가하는 것이 유용한 안전장치입니다.

반복 횟수를 알 수 없고 조건에 따라 달라질 때는 WHILE 문을 사용하세요. 반복 범위가 정해져 있을 때는 FOR 문을 사용하세요. FOR 문은 반복 횟수 카운터가 자동으로 관리됩니다.

종종 그렇습니다. AI는 제어 변수가 종료 조건으로 향하는지 확인하고 그렇지 않을 경우 경고할 수 있습니다. 실시간 데이터에 따라 종료되는 루프의 경우 확실한 확인을 위해 추가적인 테스트가 필요합니다.

네. WHILE 루프는 최상위 조건이 거짓이 되면 종료되지만, 본문 안에 EXIT 또는 EXIT WHEN 문을 넣으면 루프를 일찍 종료할 수 있어 특정 상황을 처리할 때 유용합니다.

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