コレクション・メソッドは、コレクションに関する情報を戻したり、コレクションに対する操作を実行する組込み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の値は常にパラメータの型定義から導出されます。
関連トピック