1. ホーム
  2. oracle

[解決済み] Oracle PL/SQL - シンプルな配列変数を作成する方法は?

2022-06-04 21:15:41

質問

PL/SQL コードで使用できるインメモリ配列変数を作成したいと思います。 Oracle PL/SQL では、純粋なメモリを使用するコレクションは見つからず、すべてテーブルと関連付けられているようです。 PL/SQL(C#構文)でこのようなことを行いたいと思っています。

string[] arrayvalues = new string[3] {"Matt", "Joanne", "Robert"};

編集します。 オラクル:9i

どのように解決するには?

固定サイズの配列にはVARRAYを使用することができます。

declare
   type array_t is varray(3) of varchar2(10);
   array array_t := array_t('Matt', 'Joanne', 'Robert');
begin
   for i in 1..array.count loop
       dbms_output.put_line(array(i));
   end loop;
end;

または、非束縛の配列のためのTABLE。

...
   type array_t is table of varchar2(10);
...

ここでの "table" という単語は、紛らわしいことにデータベースのテーブルとは何の関係もありません。 どちらの方法もインメモリ配列を作成します。

どちらの方法でも、要素を追加する前に、コレクションを初期化し、拡張する必要があります。

declare
   type array_t is varray(3) of varchar2(10);
   array array_t := array_t(); -- Initialise it
begin
   for i in 1..3 loop
      array.extend(); -- Extend it
      array(i) := 'x';
   end loop;
end;

最初のインデックスは0でなく1です。