ホームページ >データベース >Oracle >Oracle ストアド プロシージャのループ ステートメントとは何ですか?

Oracle ストアド プロシージャのループ ステートメントとは何ですか?

WBOY
WBOYオリジナル
2022-06-10 15:48:1113510ブラウズ

Oracle ストアド プロシージャのループ ステートメント: 1. LOOP ループ、構文は「ループ ループ本体; EXIT WHEN ループ終了条件式; END LOOP;」; 2. WHILE ループ、構文は「while 条件式」計算式 ループ ループ文;エンド ループ;"; 3. ループの場合、構文は「for 変数 IN (逆) カウンタ下限値…カウンタ上限値 LOOP ループ本体;END LOOP;」となります。

Oracle ストアド プロシージャのループ ステートメントとは何ですか?

このチュートリアルの動作環境: Windows 10 システム、Oracle バージョン 12c、Dell G3 コンピューター。

Oracle ストアド プロシージャのループ ステートメントとは何ですか?

プログラムで特定の操作を繰り返し実行する必要がある場合、ループ構造を使用する必要があります。 PL/SQLのループ文には主にLOOP文、WHERE文、FOR文の3種類があります。

LOOP ステートメント

LOOP ステートメントは、まずループ本体を 1 回実行し、次に EXIT WHEN キーワードの後の条件式が true か false かを判断します。 true の場合、ループ本体を終了します。それ以外の場合、プログラムはループ本体を再度実行します。

基本構文:

loop
    A;
    EXIT WHEN B;
END LOOP;

A: ループ本体内の SQL ステートメントを表します。これは 1 文または複数の文にすることができます。これはループ本体の中核部分です。これらのステートメントは実行されます。少なくとも一度は。

B: ループ終了条件式。 true の場合はループを終了し、そうでない場合はループ本体を再度実行します。

コード例:

-- Created on 2020/12/16 by GUO 
declare 
  i int:= 0;
begin
  loop
    i:=i+1;
    dbms_output.put_line(i);
    EXIT WHEN i > 3;
  END LOOP;
end;

実行結果:

Oracle ストアド プロシージャのループ ステートメントとは何ですか?

##実践例:

ループカーソルを使用する場合、値を取得しますカーソル内の値を再割り当てする必要があります。再割り当てしないと、エラーが報告されます。

-- Created on 2020/12/17 by GUO 
declare
  cursor user is
    select * from user_table;
  user1 user_table%rowtype;
begin
  open user;
  loop
    fetch user into user1;
    exit when user%notfound;
    dbms_output.put_line('用户名称:' || user1.USER_NAME);
    dbms_output.put_line('用户年龄:' || user1.USER_AGE);
  end loop;
  close user; --关闭游标
end;

WHILE ステートメント

実行前に条件式の値が true であるかどうかを判定し、true の場合はループ本体を実行し、そうでない場合は WHILE ループを終了します。ループの背後にあるコード。

基本構文:

while a loop
  b;
end loop;

A: 条件式を表します。値が true の場合、プログラムはループ本体を実行し、それ以外の場合は終了します。

B: ループ本体内の SQL ステートメント。

コード例:

-- Created on 2020/12/17 by GUO 
declare
  i int := 0;
begin
  while i < 3 loop
    i := i + 1;
    dbms_output.put_line(i);
  end loop;
end;

実行結果:

Oracle ストアド プロシージャのループ ステートメントとは何ですか?

実際の例:

-- Created on 2020/12/17 by GUO 
declare
  cursor user is
    select * from user_table;
  user1 user_table%rowtype;
begin
  open user;
  fetch user into user1;
  while(user%found)loop
  dbms_output.put_line(&#39;用户名称:&#39; || user1.USER_NAME);
  fetch user into user1;
  end loop;
end;

FOR ステートメント#FOR 文は、ループ回数を事前に設定できるループ制御文で、ループ カウンタ (通常は整数変数) を持ち、このカウンタによってループ回数を制御します。

基本構文:

for A IN (reverse) B...C LOOP
   D;
 END LOOP;

A: カウンターとして使用される変数 (通常は証明書タイプ) を表します。デフォルト値は増加します。ループ内で reverse キーワードが使用されると、徐々にループします。

B: カウンタ下限値 カウンタ値が下限値未満の場合、ループを終了します。

C: カウンタの上限値 カウンタ値が上限値を超えた場合、ループを終了します。

D: ループ本体。

コード例:

-- Created on 2020/12/17 by GUO 
declare 
  i int := 0;
begin
  for i IN reverse 1..5 LOOP
    dbms_output.put_line(i);
  END LOOP;
end;

実行結果:

##実践例: Oracle ストアド プロシージャのループ ステートメントとは何ですか?

カーソルを使用した使用

-- Created on 2020/12/17 by GUO 
declare
  cursor user is
    select * from user_table;
begin
  for user1 in user loop
  dbms_output.put_line(&#39;用户名称:&#39;||user1.USER_NAME);
  dbms_output.put_line(&#39;用户年龄:&#39;||user1.USER_AGE);
  end loop;
end;

推奨チュートリアル: 「

Oracle ビデオ チュートリアル

以上がOracle ストアド プロシージャのループ ステートメントとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。