13.11 コレクション変数の宣言
コレクション変数はコンポジット変数であり、要素と呼ばれるその内部コンポーネントはデータ型が同じです。
コレクション変数の値およびその要素の値は変更可能です。
コレクション全体は、その名前によって参照します。コレクションの要素を参照するには、構文collection
(
index
)
を使用します。
PL/SQLには次の3種類のコレクション型があります。
-
連想配列(以前のPL/SQL表または索引付き表)
-
可変サイズの配列(VARRAY)
-
ネストした表
連想配列は、文字列型またはPLS_INTEGER
で索引付けできます。VARRAYおよびネストした表は、整数で索引付けできます。
コレクション変数は、次のいずれかの方法で作成できます。
-
コレクション型を定義し、次にその型の変数を宣言します。
-
事前に宣言されているコレクション変数と同じ型のコレクション変数を宣言するには、
%TYPE
を使用します。
注意:
このトピックの内容は、PL/SQLブロックまたはパッケージ内で定義するコレクション型に適用されます。このコレクション型は、CREATE TYPE文を使用して作成するスタンドアロン・コレクション型とは異なります。
PL/SQLブロックまたはパッケージでは、3つすべてのコレクション型を定義できます。CREATE
TYPE
文を使用した場合、ネストした表型およびVARRAY
型は作成できますが、連想配列型は作成できません。
ここでのトピック
構文
collection_type_definition ::=
assoc_array_type_def ::=
collection_variable_decl ::=
(collection_constructor ::=, function_call ::=, qualified_expression ::=)
セマンティクス
collection_type_definition
type
定義するコレクション型の名前。
assoc_array_type_def
連想配列の型定義。
assoc_array_type_defの制限
ブロック、サブプログラム、パッケージ仕様部、またはパッケージ本体の宣言部にのみ記述できます。
datatype
連想配列の要素のデータ型。datatype
には、REF
CURSOR
を除く任意のPL/SQLデータ型を指定できます。
NOT NULL
連想配列のすべての要素にNOT
NULL
制約を指定します。この制約の詳細は、「NOT NULL制約」を参照してください。
{ PLS_INTEGER | BINARY_INTEGER }
連想配列の索引のデータ型がPLS_INTEGER
であることを指定します。
{ VARCHAR2 | VARCHAR | STRING } (v_size)
連想配列の索引のデータ型が、v_size
の長さのVARCHAR2
(またはそのサブタイプのVARCHAR
またはSTRING
)であることを指定します。
連想配列の要素には、TO_CHAR
ファンクション(『Oracle Database SQL言語リファレンス』を参照)でVARCHAR2
に変換できる任意のデータ型の値を移入できます。
注意:
文字列で索引付けされている連想配列は、各国語サポート(NLS)パラメータの影響を受ける可能性があります。詳細は、「文字列で索引付けされている連想配列に影響を与えるNLSパラメータ値」を参照してください。
LONG
連想配列の索引のデータ型がLONG
(VARCHAR2(32760)
と等価)であることを指定します。
注意:
LONG
は、既存のアプリケーションとの下位互換性のためにのみサポートされています。新しいアプリケーションではVARCHAR2(32760)
を使用してください。
type_attribute、rowtype_attribute
連想配列の索引のデータ型が、%ROWTYPE
または%TYPE
のいずれかで指定されたデータ型であることを指定します。このデータ型はPLS_INTEGER
、BINARY_INTEGER
またはVARCHAR2(
v_size)
を表している必要があります。
varray_type_def
可変サイズの配列の型定義。
size_limit
VARRAYに格納できる要素の最大数。size_limit
は、1から2147483647の範囲の整数リテラルである必要があります。
datatype
VARRAYの要素のデータ型。datatype
には、REF
CURSOR
を除く任意のPL/SQLデータ型を指定できます。
NOT NULL
VARRAYのすべての要素にNOT
NULL
制約を指定します。この制約の詳細は、「NOT NULL制約」を参照してください。
nested_table_type_def
ネストした表の型定義。
datatype
ネストした表の要素のデータ型。datatype
には、REF
CURSOR
またはNCLOB
を除く任意のPL/SQLデータ型を指定できます。
datatype
がスカラー型である場合、ネストした表にはCOLUMN_VALUE
と呼ばれるスカラー型の列が1つ存在します。
datatype
がADTである場合、ネストした表の列はADTの名前および属性と一致します。
NOT NULL
ネストした表のすべての要素にNOT
NULL
制約を指定します。この制約の詳細は、「NOT NULL制約」を参照してください。
collection_variable_decl
new_collection_var
宣言するコレクション変数の名前。
assoc_array_type
事前に定義されている連想配列型の名前。new_collection_var
のデータ型です。
varray_type
事前に定義されているVARRAY
型の名前。new_collection_var
のデータ型です。
nested_table_type
事前に定義されているネストした表型の名前。new_collection_var
のデータ型です。
collection_constructor
new_collection_var
のデータ型のコレクション・コンストラクタ。new_collection_var
の初期値を指定します。
collection_var_1
new_collection_var
と同じデータ型の事前に宣言されているコレクション変数の名前。new_collection_var
の初期値を指定します。
注意:
collection_var_1
とnew_collection_var
は、同じ型の要素を持っているだけでなく、同じデータ型を持っている必要があります。
collection_var_2
事前に宣言されているコレクション変数の名前。
%TYPE
%TYPE属性を参照してください。
例
関連トピック
この章:
他の章: