ループイン中 Oracle PL/SQLと例

⚡ スマートサマリー

Oracle PL/SQLのWHILEループは、条件が真である間、コードブロックを繰り返し実行します。これはエントリチェックループであり、各イテレーションの前に終了条件をテストするため、ブロックは0回実行される可能性があり、明示的なEXITキーワードは必要ありません。

  • 🔁 目的: whileループは、条件が真である間実行され、条件が偽になった時点で停止します。
  • 🚦 入場チェック: 条件はブロックの前にテストされるため、ループは0回実行される可能性があります。
  • 🧮 出口は不要です。 条件は各反復処理で暗黙的に検証されるため、明示的な終了処理は不要です。
  • 🔢 カウンター: ブロック内の変数が変化して、最終的に条件が偽になるようにする必要があります。
  • ♾️ 無限のリスク: カウンターが条件を満たさない場合、ループは永久に実行されます。
  • <XNUMXxEXNUMX><XNUMXxEXNUMX><XNUMXxXNUMXA><XNUMXxXNUMX><XNUMXxXNUMXA>️️ 対 目的: 反復回数が不明な場合はWHILE文を、反復回数が固定されている場合はFOR文を使用してください。
  • 🚪 早期終了: EXIT WHEN は、条件が偽になる前に WHILE ループを抜け出すことができます。

Oracle PL/SQL Whileループ

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までの数字を出力します。

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ループ、FORループ、基本ループの比較

PL/SQLには3種類のループがあり、適切なループを選択することでコードを簡潔に保つことができます。WHILEループは条件に基づいた繰り返し処理に適しており、他の2種類は固定回数の処理や明示的に制御された終了処理に適しています。

ループ 終了基準 最適な使用例
WHILEループ 上部の条件が偽になる 反復回数は不明です
FOR ループ カウンターが射程の端に到達しました 反復回数は既知である
基本ループ ブロック内での明示的なEXIT 出口は手動で制御されます

WHILEループはループの先頭で条件を判定するため、条件が最初から偽の場合、ループ本体は一度も実行されない可能性があります。これが、ループ本体が必ず少なくとも一度は実行される基本的なループとの決定的な違いです。

無限ループを回避する

WHILEループは、制御変数が終了条件に向かって変化することに完全に依存しています。もし変化しない場合、ループは永遠に実行され、セッションはハングアップします。これを防ぐには、次の3つの習慣を身につけることが重要です。

  • 反復処理ごとにカウンターを変更してください。 この例では、ループ内で「a」をインクリメントしています。その行を削除すると、ループが無限に続きます。
  • 限界を試す。 理想的な場合だけでなく、開始値に対しても実際に条件が偽になる可能性があることを確認してください。
  • 安全装置「EXIT WHEN」を追加します。 データ駆動型ループの場合、最大反復回数に対するEXIT WHENは、予期しない値に対するガードとして機能します。

繰り返し回数が本当に固定されている場合、FORループを使用すれば、カウンターが自動的に管理されるため、リスクは完全に排除されます。

よくあるご質問

はい。条件はブロックの前にチェックされるため、開始時点で条件が偽であれば、本体は実行されません。この開始時のチェックが、常に一度実行される基本的なループとの主な違いです。

ループ内の変数が、各イテレーションで終了条件に向かって変化するようにしてください。最大カウントに対してEXIT WHENを追加することは、データ駆動型ループにとって有効な安全策となります。

反復回数が不明で条件によって異なる場合は、WHILE を使用してください。固定範囲をループする場合は、FOR を使用してください。FOR のカウンターは自動的に管理されます。

多くの場合、AIは制御変数が終了条件に向かっているかどうかをチェックし、そうでない場合は警告を発することができます。終了がライブデータに依存するループの場合は、確実性を確保するためにテストが必要です。

はい。WHILEループは最上位条件が偽になった時点で終了しますが、本体内のEXITまたはEXIT WHENによって早期に終了することも可能です。これは、特殊なケースでループを抜け出す際に便利です。