コレクション・メソッドは、コレクションに関する情報を戻したり、コレクションに対する操作を実行する組込みPL/SQLサブプログラムです。
構文
collection_method_call ::=
キーワードとパラメータの説明
collection_name
現行の有効範囲内で宣言されたコレクションの名前。
collection_name
内の要素の現在の数を戻すファンクション。
指定されている索引の数に応じてアクションが異なるプロシージャ。
索引が指定されていないDELETE
は、collection_name
からすべての要素を削除します。
DELETE(
n
)
は、n
番目の要素を結合配列またはネストした表から削除します。 n
がNULLである場合、DELETE(
n
)
は何も実行しません。
DELETE(
m,n
)
は、結合配列またはネストした表からmからnの範囲のすべての要素を削除します。 mがnより大きい場合、またはmかnがNULLである場合、DELETE(
m,n
)
は何も実行しません。
削除対象の要素が存在しない場合でも、DELETE
は単にその要素をスキップするため、例外は呼び出されません。 VARRAYは密であるため、個の要素は削除できません。 PL/SQLは削除された要素のプレースホルダを保持するため、削除された要素に新しい値を代入して、その要素を置き換えることができます。 ただし、PL/SQLは切り捨てられた(TRIM)要素のプレースホルダは保持しません。
collection_name
にindex
要素が存在する場合はTRUE
、それ以外はFALSE
を戻すファンクション。
通常は、EXISTS
を使用して、存在しない要素を参照した場合に例外が呼び出されないようにします。また、DELETE
とともに使用して疎であるネストした表を維持します。
collection_name
が結合配列である場合、EXISTS
は使用できません。
指定されている索引の数に応じてアクションが異なるプロシージャ。
EXTEND
は、コレクションに1つのNULL要素を追加します。
EXTEND(
n
)
は、コレクションにn
個のNULL要素を追加します。
EXTEND(
n,i
)
は、コレクションにi番目の要素のコピーをn個追加します。 EXTEND
は、コレクションの内部サイズに対して操作します。 EXTEND
は削除された要素を見つけると、それらの要素を数に含めます。
collection_name
が結合配列である場合、EXTEND
は使用できません。
コレクション内の最初の(最小の)添字値またはキー値を戻すファンクション。 コレクションが空の場合、FIRST
はNULL
を戻します。 コレクションに含まれる要素の数が1つのみの場合、FIRST
とLAST
は同じ添字値を戻します。 コレクションがVARRAYの場合、FIRST
は常に1を戻します。
整数で索引付けされているコレクションの場合、FIRST
およびLAST
は最初および最後(最小および最大)の索引番号を戻します。
文字列で索引付けされている結合配列の場合、FIRST
およびLAST
は最小および最大のキー値を戻します。 NLS_COMP
初期化パラメータがANSI
に設定されている場合、順序付けはNLS_SORT
初期化パラメータで指定されたソート順に基づきます。
index
データ型PLS_INTEGER
またはPLS_INTEGER
に暗黙的に変換可能なデータ型の値を持つ数式(表3-10「実行可能なPL/SQLの暗黙的なデータ型変換」を参照)。
コレクション内の最後の(最大の)添字値を戻すファンクション。 コレクションが空の場合、LAST
はNULL
を戻します。 コレクションに含まれる要素の数が1つのみの場合、FIRST
とLAST
は同じ添字値を戻します。 VARRAYの場合、LAST
は常にCOUNT
と同じです。 ネストした表の場合、LAST
は通常、COUNT
と同じです。 ただし、ネストした表の途中から要素を削除すると、LAST
はCOUNT
より大きくなります。
collection_name
に格納できる要素の最大数を戻すファンクション。 collection_name
に最大サイズがない場合、LIMIT
はNULL
を戻します。
索引nの後の添字を戻すファンクション。 nの後の番号がない場合、NEXT(
n
)
はNULL
を戻します。
コレクション内の索引nの前の添字を戻すファンクション。 nの前の番号がない場合、PRIOR(
n
)
はNULL
を戻します。
プロシージャ。
TRIM
は、コレクションの末尾から1つの要素を削除します。
TRIM(
n
)
は、コレクションの末尾からn個の要素を削除します。 nがCOUNT
より大きいと、TRIM(
n
)
はSUBSCRIPT_BEYOND_COUNT
を呼び出します。 TRIM
は、コレクションの内部サイズを操作します。 TRIM
は削除された要素を見つけると、それらの要素を数に含めます。
collection_name
が結合配列である場合、TRIM
は使用できません。
使用上の注意
コレクション・メソッド・コールは、PL/SQL文内のPL/SQLサブプログラムの起動を指定できるすべての場所で使用できます(SQL文では使用できません)。
基本構造的にNULLであるコレクションに適用されるのはEXISTS
のみです。 それ以外のメソッドをそのようなコレクションに適用すると、PL/SQLはCOLLECTION_IS_NULL
を呼び出します。
コレクション要素の添字が連続している場合、FOR
ループでcollection
.FIRST
.. collection
.LAST
を使用して、すべての要素に対して反復処理を実行できます。 PRIOR
またはNEXT
を使用すると、任意の添字列を索引とするコレクション内を移動できます。 たとえば、PRIOR
またはNEXT
を使用すると、要素をいくつか削除したネストした表内、または添字が文字列の値である結合配列内を移動できます。
EXTEND
は、削除された要素を含むコレクションの内部サイズに対して操作します。 EXTEND
を使用して、基本構造的にNULLであるコレクションの初期化はできません。 また、NOT
NULL
制約をTABLE
またはVARRAY
型に指定した場合、EXTEND
の最初の2つの形式はその型のコレクションに適用できません。
ネストした表に割り当てられるメモリーの量は、動的に増減します。 要素を削除すると、メモリーはページ単位で解放されます。 表全体を削除した場合は、すべてのメモリーが解放されます。
一般に、TRIM
とDELETE
の間の相互作用には依存しないでください。 ネストした表は、固定サイズの配列のように扱ってDELETE
のみを使用するか、またはスタックのように扱ってTRIM
とEXTEND
のみを使用することをお薦めします。
サブプログラム内で、コレクション・パラメータは引数のプロパティがバインドされていることを前提にしています。 メソッドFIRST
、LAST
、COUNT
などをそのようなパラメータに適用できます。 VARRAYパラメータの場合、パラメータ・モードに関係なく、LIMIT
の値は常にパラメータの型定義から導出されます。
関連トピック