Oracle PL/SQL FOR LOOPと例
Forループとは何ですか?
「FOR LOOP」ステートメントは、他の条件に基づくのではなく、既知の回数だけコードを実行する場合に最適です。
このループでは下限値と上限値を指定し、ループ変数がこの範囲内にある限りループが実行されます。
ループ変数は自己増分なので、このループでは明示的な増分操作は必要ありません。ループ変数は暗黙的に宣言されるため、宣言する必要はありません。
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
構文の説明:
- 上記の構文では、キーワード「FOR」はループの始まりを示し、「END LOOP」はループの終わりを示します。
- ループ変数は、実行部分を実行する前に毎回評価されます。
- 実行ブロックには、実行する必要があるすべてのコードが含まれています。 実行部分には、任意の実行ステートメントを含めることができます。
- ループ変数はループ全体の実行中に暗黙的に宣言され、このループ変数のスコープはこのループ内のみになります。
- ループ変数が範囲外になった場合、制御はループから抜けます。
- lower_limit の前にキーワード「REVERSE」を追加することで、ループを逆の順序で動作させることができます。
例: この例では、FOR ループ ステートメントを使用して 1 から 5 までの数字を出力します。そのためには、次のコードを実行します。
BEGIN dbms Qutput.put linef.Prp.gram started.' ); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP: dbms_output.put_iine('Program completed.'); END; /
コードの説明:
- コード行 2: 「プログラムが開始されました」というメッセージを出力します。
- コード行 3: キーワード「FOR」はループの開始をマークし、loop_variable「a」が宣言されます。 1 から 5 までの値が入ります。
- コード行 5: 「a」の値を出力します。
- コード行 6: キーワード「END LOOP」は、実行ブロックの終わりを示します。
- 条件が失敗し、コントロールがループから終了するため、行 5 からのコードは「a」が値 6 に達するまで実行され続けます。
- コード行 7: 「プログラムが完了しました」というメッセージを印刷する
ネストされたループ
ループ ステートメントはネストすることもできます。 外側のループと内側のループは異なるタイプにすることができます。 ネストされたループでは、外側のループの XNUMX つの反復値ごとに、内側のループが完全に実行されます。
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
構文の説明:
- 上記の構文では、外側のループの内側にもう XNUMX つのループがあります。
- ループは任意のタイプにすることができ、実行機能部分は同じです。
例: この例では、FOR ループ ステートメントを使用して 1 から 3 までの数字を出力します。各数字は、その値と同じ回数だけ出力されます。そのためには、次のコードを実行します。
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; /
コードの説明:
- コード行 2: 変数 'b' を 'NUMBER' データ型として宣言しています。
- コード行 4: 「プログラムが開始されました」というメッセージを出力します。
- コード行 5: キーワード「FOR」はループの開始をマークし、loop_variable「a」が宣言されます。 1 から 3 までの値が入ります。
- コード行 7: 毎回「b」の値を「1」にリセットします。
- コード行 8: Inner(インナー) whileループ 条件 a>=b をチェックします。
- コード行 10: 上記の条件が満たされる限り、「a」の値を出力します。
- コード行 14: 「プログラムが完了しました」というメッセージを印刷する
まとめ
ループ | FOR ループ |
---|---|
終了基準 | カウンターが限界に達したら終了 |
使用法 | 実行するループ数がわかっている場合に使用すると便利です。 |