コレクションのコンストラクタ
コレクションのコンストラクタ(コンストラクタ)は、コレクション型と同じ名前のシステム定義ファンクションです(この型のコレクションを戻します)。
ノート:
このトピックの内容は、VARRAYおよびネストした表にのみ適用されます。このトピックでは、コレクションはVARRAYまたはネストした表のことを意味します。連想配列は、修飾式と集計(修飾式の概要を参照)を使用します。
次にコンストラクタを起動する構文を示します。
collection_type ( [ value [, value ]... ] )
パラメータ・リストが空の場合は、コンストラクタから空のコレクションが戻されます。それ以外の場合は、指定した値を含むコレクションが戻されます。セマンティクスの詳細は、「collection_constructor」を参照してください。
戻されたコレクションは、変数の宣言およびブロックの実行部で(同じ型の)コレクション変数に代入できます。
例6-7 コレクション(VARRAY)変数の空への初期化
この例では、コンストラクタを2回起動します(変数の宣言でVARRAY変数team
を空に初期化するとき、およびブロックの実行部で新しい値を指定するときに1回ずつ)。プロシージャprint_team
は、team
の初期値と最終的な値を表示します。print_team
では、team
が空であるかどうかを判断するために、コレクション・メソッドCOUNT
を使用しています(詳細は「コレクション・メソッド」を参照)。(NULLの可能性があるVARRAYを出力するプロシージャの例は、例6-30を参照してください。)
Live SQL:
この例は、Oracle Live SQLの「コレクション(VARRAY)変数の空への初期化」で表示および実行できます
DECLARE
TYPE Foursome IS VARRAY(4) OF VARCHAR2(15);
team Foursome := Foursome(); -- initialize to empty
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..4 LOOP
DBMS_OUTPUT.PUT_LINE(i || '.' || team(i));
END LOOP;
END IF;
DBMS_OUTPUT.PUT_LINE('---');
END;
BEGIN
print_team('Team:');
team := Foursome('John', 'Mary', 'Alberto', 'Juanita');
print_team('Team:');
END;
/
結果:
Team:
Empty
---
Team:
1.John
2.Mary
3.Alberto
4.Juanita
---