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

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까지의 숫자를 출력합니다.

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 루프는 카운터가 자동으로 관리되므로 위험을 완전히 제거합니다.
