web-dev-qa-db-ja.com

oracle pl / sql配列

配列に格納したい番号がいくつかあります。 Oracle pl/sqlで配列を宣言し、それに値を割り当てるにはどうすればよいですか?

11
Andromeda

PL/SQLには配列型がありますが、テーブルを使用して自分で作成できます。

declare 
  type NumberArray is table of number index by binary_integer;
  myArray NumberArray;
begin

   myArray(0) := 1
   myArray(1) := 2 
   --or use a for loop to fill
end;

解説記事

[〜#〜]編集[〜#〜]

またはAdam Muschが言ったように、操作しているデータのデータサイズがわかっている場合は、長さが固定されたVARRAYsを使用できます。これはOracle環境なので、添え字は1で始まり、

別の方法は、VARRAYを使用することです。ここで、配列の添え字は1から始まり、VARRAYの長さは固定されています。

セマンティック:

declare  type VarrayType is varray(size) of ElementType;

例:

    declare
      type NumberVarray is varray(100) of NUMERIC(10);
      myArray NumberVarray;
    BEGIN
      myArray := NumberVarray(1,10,100,1000,10000);

      myArray(1) = 2;

      for i in myArray.first..myArray.last
      loop
        dbms_output.put_line('myArray(' || i || '): ' || myArray(i));
      end loop;  
    end;
END;

出力:

myArray(1) : 2
myArray(2) : 10
myArray(3) : 100
myArray(4) : 1000
myArray(5) : 10000