Plsql-loops

提供:Dev Guides
移動先:案内検索

PL/SQL-ループ

この章では、PL/SQLのループについて説明します。 コードのブロックを数回実行する必要がある場合があります。 一般に、ステートメントは順番に実行されます。関数の最初のステートメントが最初に実行され、次に2番目のステートメントが実行されます。

プログラミング言語は、より複雑な実行パスを可能にするさまざまな制御構造を提供します。

ループステートメントを使用すると、ステートメントまたはステートメントのグループを複数回実行できます。ほとんどのプログラミング言語では、ループステートメントの一般的な形式は次のとおりです-

ループアーキテクチャ

PL/SQLには、ループ要件を処理するために次のタイプのループが用意されています。 詳細を確認するには、次のリンクをクリックしてください。

S.No Loop Type & Description
1

PL/SQL Basic LOOP

このループ構造では、一連のステートメントがLOOPステートメントとEND LOOPステートメントで囲まれています。 各反復で、一連のステートメントが実行され、ループの先頭から制御が再開されます。

2

PL/SQL WHILE LOOP

特定の条件が真の間、ステートメントまたはステートメントのグループを繰り返します。 ループ本体を実行する前に条件をテストします。

3

PL/SQL FOR LOOP

一連のステートメントを複数回実行し、ループ変数を管理するコードを短縮します。

4

Nested loops in PL/SQL

別の基本ループ、while、またはforループ内で1つ以上のループを使用できます。

PL/SQLループのラベル付け

PL/SQLループにはラベルを付けることができます。 ラベルは二重山括弧(???)で囲まれ、LOOPステートメントの先頭に表示される必要があります。 ラベル名は、LOOPステートメントの末尾にも表示できます。 EXITステートメントでラベルを使用して、ループを終了できます。

次のプログラムは、概念を示しています-

DECLARE
   i number(1);
   j number(1);
BEGIN
   << outer_loop >>
   FOR i IN 1..3 LOOP
      << inner_loop >>
      FOR j IN 1..3 LOOP
         dbms_output.put_line('i is: '|| i || ' and j is: ' || j);
      END loop inner_loop;
   END loop outer_loop;
END;
/

上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-

i is: 1 and j is: 1
i is: 1 and j is: 2
i is: 1 and j is: 3
i is: 2 and j is: 1
i is: 2 and j is: 2
i is: 2 and j is: 3
i is: 3 and j is: 1
i is: 3 and j is: 2
i is: 3 and j is: 3

PL/SQL procedure successfully completed.

ループ制御ステートメント

ループ制御ステートメントは、通常のシーケンスから実行を変更します。 実行がスコープを離れると、そのスコープで作成されたすべての自動オブジェクトが破棄されます。

PL/SQLは、次の制御文をサポートしています。 ループにラベルを付けることは、ループ外で制御を行うのにも役立ちます。 詳細を確認するには、次のリンクをクリックしてください。

S.No Control Statement & Description
1

EXIT statement

Exitステートメントはループを完了し、END LOOPの直後に制御がステートメントに渡されます。

2

CONTINUE statement

ループがその本体の残りをスキップし、反復する前にその状態をすぐに再テストします。

3

GOTO statement

ラベル付きステートメントに制御を移します。 ただし、プログラムでGOTOステートメントを使用することはお勧めしません。