VARRAY (可変サイズの配列)
VARRAY(可変サイズの配列)とは、0個(空の場合)から宣言されている最大サイズまで要素の数を変更できる配列のことです。
VARRAY変数の要素にアクセスするには、構文variable_name
(
index
)
を使用します。index
の下限は1で、上限は現行の要素の数です。上限は、要素の追加または削除に合わせて変化しますが、最大サイズを超えることはできません。VARRAYをデータベースに格納したりデータベースから取り出しても、その索引と要素の順序は変わりません。
図6-1は、Grades
という名前のVARRAY変数を示していて、最大サイズは10個で、7個の要素が格納されています。Grades
(n
)は、Grades
のn番目の要素を参照します。Grades
の上限は7で、10を超えることはできません。
VARRAY変数は単一オブジェクトとしてデータベースに格納されます。VARRAY変数が4KB未満の場合は、そのVARRAY変数が列になっている表内に配置され、それ以外の場合は、表の外側に配置されますが、表領域は同じです。
初期化されていないVARRAY変数は、NULLのコレクションです。空にするかNULL
以外の値を代入して初期化する必要があります。詳細は、「コレクションのコンストラクタ」および「コレクション変数への値の代入」を参照してください。
ここでのトピック
関連項目:
-
表6-1に、VARRAYの特性の概要を示します
-
VARRAY
型の定義の構文は、「varray_type_def ::=」を参照してください -
スタンドアロン
VARRAY
方の作成の詳細は、「CREATE TYPE文」を参照してください -
VARRAYの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
例6-4 VARRAY(可変サイズの配列)
この例では、ローカルのVARRAY
型を定義した後に、この型の変数を宣言(コンストラクタを使用して初期化)し、このVARRAYを出力するプロシージャを定義します。この例では、このプロシージャを3回起動します(変数を初期化した後、2つの要素の値をそれぞれ変更した後、およびコンストラクタを使用してすべての要素の値を変更した後に1回ずつ)。(NULLまたは空の可能性があるVARRAYを出力するプロシージャの例は、例6-30を参照してください。)
Live SQL:
この例は、Oracle Live SQLの「VARRAY(可変サイズの配列)」で表示および実行できます
DECLARE
TYPE Foursome IS VARRAY(4) OF VARCHAR2(15); -- VARRAY type
-- varray variable initialized with constructor:
team Foursome := Foursome('John', 'Mary', 'Alberto', 'Juanita');
PROCEDURE print_team (heading VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE(heading);
FOR i IN 1..4 LOOP
DBMS_OUTPUT.PUT_LINE(i || '.' || team(i));
END LOOP;
DBMS_OUTPUT.PUT_LINE('---');
END;
BEGIN
print_team('2001 Team:');
team(3) := 'Pierre'; -- Change values of two elements
team(4) := 'Yvonne';
print_team('2005 Team:');
-- Invoke constructor to assign new values to varray variable:
team := Foursome('Arun', 'Amitha', 'Allan', 'Mae');
print_team('2009 Team:');
END;
/
結果:
2001 Team:
1.John
2.Mary
3.Alberto
4.Juanita
---
2005 Team:
1.John
2.Mary
3.Pierre
4.Yvonne
---
2009 Team:
1.Arun
2.Amitha
3.Allan
4.Mae
---