Plsql-nested-loops

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

PL/SQL-ネストされたループ

PL/SQLでは、1つのループを別のループ内で使用できます。 次のセクションでは、概念を説明するためのいくつかの例を示します。

PL/SQLのネストされた基本的なLOOP文の構文は次のとおりです-

LOOP
   Sequence of statements1
   LOOP
      Sequence of statements2
   END LOOP;
END LOOP;

PL/SQLでネストされたFOR LOOP文の構文は次のとおりです-

FOR counter1 IN initial_value1 .. final_value1 LOOP
   sequence_of_statements1
   FOR counter2 IN initial_value2 .. final_value2 LOOP
      sequence_of_statements2
   END LOOP;
END LOOP;

PascalのネストされたWHILE LOOPステートメントの構文は次のとおりです-

WHILE condition1 LOOP
   sequence_of_statements1
   WHILE condition2 LOOP
      sequence_of_statements2
   END LOOP;
END LOOP;

次のプログラムは、ネストされた基本ループを使用して2から100までの素数を見つけます-

DECLARE
   i number(3);
   j number(3);
BEGIN
   i := 2;
   LOOP
      j:= 2;
      LOOP
         exit WHEN ((mod(i, j) = 0) or (j = i));
         j := j +1;
      END LOOP;
   IF (j = i ) THEN
      dbms_output.put_line(i || ' is prime');
   END IF;
   i := i + 1;
   exit WHEN i = 50;
   END LOOP;
END;
/

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

2 is prime
3 is prime
5 is prime
7 is prime
11 is prime
13 is prime
17 is prime
19 is prime
23 is prime
29 is prime
31 is prime
37 is prime
41 is prime
43 is prime
47 is prime

PL/SQL procedure successfully completed.