ループイン中 Oracle PL/SQLと例
⚡ スマートサマリー
Oracle PL/SQLのWHILEループは、条件が真である間、コードブロックを繰り返し実行します。これはエントリチェックループであり、各イテレーションの前に終了条件をテストするため、ブロックは0回実行される可能性があり、明示的なEXITキーワードは必要ありません。
PL/SQLのWhileループとは何ですか?
その Whileループ PL/SQLにおけるループは、基本的なループ文とよく似ていますが、終了条件がループの先頭にある点が異なります。これは、実行前に終了条件がチェックされるため、条件が満たされた場合にのみ実行ブロックが実行される、エントリチェックループのような働きをします。
ループを終了するために明示的に「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ループ、FORループ、基本ループの比較
PL/SQLには3種類のループがあり、適切なループを選択することでコードを簡潔に保つことができます。WHILEループは条件に基づいた繰り返し処理に適しており、他の2種類は固定回数の処理や明示的に制御された終了処理に適しています。
| ループ | 終了基準 | 最適な使用例 |
|---|---|---|
| WHILEループ | 上部の条件が偽になる | 反復回数は不明です |
| FOR ループ | カウンターが射程の端に到達しました | 反復回数は既知である |
| 基本ループ | ブロック内での明示的なEXIT | 出口は手動で制御されます |
WHILEループはループの先頭で条件を判定するため、条件が最初から偽の場合、ループ本体は一度も実行されない可能性があります。これが、ループ本体が必ず少なくとも一度は実行される基本的なループとの決定的な違いです。
無限ループを回避する
WHILEループは、制御変数が終了条件に向かって変化することに完全に依存しています。もし変化しない場合、ループは永遠に実行され、セッションはハングアップします。これを防ぐには、次の3つの習慣を身につけることが重要です。
- 反復処理ごとにカウンターを変更してください。 この例では、ループ内で「a」をインクリメントしています。その行を削除すると、ループが無限に続きます。
- 限界を試す。 理想的な場合だけでなく、開始値に対しても実際に条件が偽になる可能性があることを確認してください。
- 安全装置「EXIT WHEN」を追加します。 データ駆動型ループの場合、最大反復回数に対するEXIT WHENは、予期しない値に対するガードとして機能します。
繰り返し回数が本当に固定されている場合、FORループを使用すれば、カウンターが自動的に管理されるため、リスクは完全に排除されます。

