ヘッダーをスキップ
Oracle Database PL/SQL言語リファレンス
11g リリース1(11.1)
E05670-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

コレクション・メソッド・コール

コレクション・メソッドは、コレクションに関する情報を戻したり、コレクションに対する操作を実行する組込みPL/SQLサブプログラムです。

構文

collection_method_call ::=

collection_method_call
collection_method_call.gifの説明

キーワードとパラメータの説明

collection_name

現行の有効範囲内で宣言されたコレクションの名前。

COUNT

collection_name内の要素の現在の数を戻すファンクション。

DELETE

指定されている索引の数に応じてアクションが異なるプロシージャ。

索引が指定されていないDELETEは、collection_nameからすべての要素を削除します。

DELETE(n)は、n番目の要素を結合配列またはネストした表から削除します。 nがNULLである場合、DELETE(n)は何も実行しません。

DELETE(m,n)は、結合配列またはネストした表からmからnの範囲のすべての要素を削除します。 mnより大きい場合、またはmnがNULLである場合、DELETE(m,n)は何も実行しません。

削除対象の要素が存在しない場合でも、DELETEは単にその要素をスキップするため、例外は呼び出されません。 VARRAYは密であるため、個の要素は削除できません。 PL/SQLは削除された要素のプレースホルダを保持するため、削除された要素に新しい値を代入して、その要素を置き換えることができます。 ただし、PL/SQLは切り捨てられた(TRIM)要素のプレースホルダは保持しません。

EXISTS

collection_nameindex要素が存在する場合はTRUE、それ以外はFALSEを戻すファンクション。

通常は、EXISTSを使用して、存在しない要素を参照した場合に例外が呼び出されないようにします。また、DELETEとともに使用して疎であるネストした表を維持します。

collection_nameが結合配列である場合、EXISTSは使用できません。

EXTEND

指定されている索引の数に応じてアクションが異なるプロシージャ。

EXTENDは、コレクションに1つのNULL要素を追加します。

EXTEND(n)は、コレクションにn個のNULL要素を追加します。

EXTEND(n,i)は、コレクションにi番目の要素のコピーをn個追加します。 EXTENDは、コレクションの内部サイズに対して操作します。 EXTENDは削除された要素を見つけると、それらの要素を数に含めます。

collection_nameが結合配列である場合、EXTENDは使用できません。

FIRST

コレクション内の最初の(最小の)添字値またはキー値を戻すファンクション。 コレクションが空の場合、FIRSTNULLを戻します。 コレクションに含まれる要素の数が1つのみの場合、FIRSTLASTは同じ添字値を戻します。 コレクションがVARRAYの場合、FIRSTは常に1を戻します。

整数で索引付けされているコレクションの場合、FIRSTおよびLASTは最初および最後(最小および最大)の索引番号を戻します。

文字列で索引付けされている結合配列の場合、FIRSTおよびLASTは最小および最大のキー値を戻します。 NLS_COMP初期化パラメータがANSIに設定されている場合、順序付けはNLS_SORT初期化パラメータで指定されたソート順に基づきます。

index

データ型PLS_INTEGERまたはPLS_INTEGERに暗黙的に変換可能なデータ型の値を持つ数式(表3-10「実行可能なPL/SQLの暗黙的なデータ型変換」を参照)。

LAST

コレクション内の最後の(最大の)添字値を戻すファンクション。 コレクションが空の場合、LASTNULLを戻します。 コレクションに含まれる要素の数が1つのみの場合、FIRSTLASTは同じ添字値を戻します。 VARRAYの場合、LASTは常にCOUNTと同じです。 ネストした表の場合、LASTは通常、COUNTと同じです。 ただし、ネストした表の途中から要素を削除すると、LASTCOUNTより大きくなります。

LIMIT

collection_nameに格納できる要素の最大数を戻すファンクション。 collection_nameに最大サイズがない場合、LIMITNULLを戻します。

NEXT

索引nの後の添字を戻すファンクション。 nの後の番号がない場合、NEXT(n)NULLを戻します。

PRIOR

コレクション内の索引nの前の添字を戻すファンクション。 nの前の番号がない場合、PRIOR(n)NULLを戻します。

TRIM

プロシージャ。

TRIMは、コレクションの末尾から1つの要素を削除します。

TRIM(n)は、コレクションの末尾からn個の要素を削除します。 nCOUNTより大きいと、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つの形式はその型のコレクションに適用できません。

ネストした表に割り当てられるメモリーの量は、動的に増減します。 要素を削除すると、メモリーはページ単位で解放されます。 表全体を削除した場合は、すべてのメモリーが解放されます。

一般に、TRIMDELETEの間の相互作用には依存しないでください。 ネストした表は、固定サイズの配列のように扱ってDELETEのみを使用するか、またはスタックのように扱ってTRIMEXTENDのみを使用することをお薦めします。

サブプログラム内で、コレクション・パラメータは引数のプロパティがバインドされていることを前提にしています。 メソッドFIRSTLASTCOUNTなどをそのようなパラメータに適用できます。 VARRAYパラメータの場合、パラメータ・モードに関係なく、LIMITの値は常にパラメータの型定義から導出されます。

関連トピック