コレクションのコンストラクタとは、コレクション型と同名のシステム定義関数であり、この関数はその型のコレクションを返します。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供しています。
説明
コンストラクタは変動配列とネストテーブルにのみ適用されます。関連配列にはコンストラクタがありません。本記事では、コレクションとは変動配列またはネストテーブルを指します。
コンストラクタを呼び出す構文は以下のとおりです:
collection_type ( [ value [, value ]... ] )
ここで、collection_type とは、以前に宣言されたネストテーブル型または変動配列型(関連配列型ではない)の名前を指します。value とは、コレクション要素 collection_type の有効な値を指します。collection_type が変動配列型の場合、最大値があり、値の数はその最大値を超えてはなりません。collection_type がネストテーブル型の場合、最大値はありません。
パラメータリストが空の場合、コンストラクタは空のコレクションを返します。それ以外の場合、コンストラクタは指定された値を含むコレクションを返します。
変数宣言やブロックの実行部で、返されるコレクションを(同じ型の)コレクション変数に代入できます。
例:コレクション変数をNULL値に初期化する。
obclient> DECLARE
TYPE players IS VARRAY(5) OF VARCHAR2(20);
team PLAYERS := players(); --初期化はNULL値
PROCEDURE print_team (heading VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE(heading);
IF team.COUNT = 0 THEN
DBMS_OUTPUT.PUT_LINE('Empty');
ELSE
FOR i IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE(i || '.' || team(i));
END LOOP;
END IF;
DBMS_OUTPUT.PUT_LINE('---');
END;
BEGIN
print_team('Team Members:');
team := players('Charles', 'Carl', 'James', 'Gary','Brian');
print_team('Team Members:');
END;
/
Query OK, 0 rows affected
Team Members:
Empty
---
Team Members:
1.Charles
2.Carl
3.James
4.Gary
5.Brian
---
上記の例では、コンストラクタが2回呼び出されています。最初に変動配列変数 team を空に初期化し、次にそのブロックの実行部で新しい値を代入します。print_team ストアドプロシージャは、team の初期値と最終値を表示します。print_team は、コレクションメソッド COUNT を使用して、team が空かどうかを判断します。