30

次のようなオラクルで「for each」を実行する方法はありますか:

begin
  for VAR in {1,2,5}
  loop
    dbms_output.put_line('The value: '||VAR);
  end loop;
end;

私はあなたが次のようなことができることを知っています:

begin
  for VAR in 1..5
  loop
    if VAR in(1,3,5) then
      dbms_output.put_line('The value: '||VAR);
    end if;
  end loop;
end;

しかし、これをより良い方法で行う方法はありませんか?一連の値を定義し、それらを反復しますか?

ありがとう。

4

2 に答える 2

50

おそらくあなたが望むほど滑らかではありませんが、これを行うことができます:

declare
  type nt_type is table of number;
  nt nt_type := nt_type (1, 3, 5);
begin
  for i in 1..nt.count loop
    dbms_output.put_line(nt(i));
  end loop;
end;

データベースにタイプを作成する場合:

create type number_table is table of number;

次に、これを行うことができます:

begin
  for r in (select column_value as var from table (number_table (1, 3, 5))) loop
    dbms_output.put_line(r.var);
  end loop;
end;
于 2012-05-29T11:37:27.230 に答える