trimは、可変長配列またはネストされたテーブルの末尾から要素を削除し、位置を破棄するために使用されるプロシージャです。 このトピックでは、このプロセスを要素の破壊と呼びます。
トリムは次のように機能します。
collection.trim(): コレクションに少なくとも1つの要素が含まれている場合、trimプロシージャはコレクションの最後から要素を破棄します。 それ以外の場合、事前定義された例外SUBSCRIPT_BEYOND_COUNTが返されます。collection.trim(index): コレクションの末尾に少なくともn個の要素が含まれている場合、trimプロシージャはコレクションの末尾からn個の要素を破棄します。 それ以外の場合、事前定義された例外SUBSCRIPT_BEYOND_COUNTが返されます。
コレクションの内部サイズに基づいて要素をトリムします。 deleteメソッドを使用して要素を削除すると、その要素のプレースホルダーが保持されます。 トリム手順は、要素が位置を占めるので、要素がまだ存在するとみなす。 したがって、トリムプロシージャを使用して、削除された要素を破棄できます。 PL/SQLは、破壊された要素のプレースホルダーを保持しないため、破壊された要素はコレクションの内部サイズに含まれません。 値を割り当てて破壊された要素を復元することはできません。
trimとdeleteを別々に使用することを推奨します。 ネストされたテーブルを固定サイズの配列として扱う場合は、deleteのみを使用します。 ネストされたテーブルをスタックとして扱う場合は、trimとextendのみを使用します。
例
次の破棄された要素へのアクセス例を参照してください。
DECLARE
TYPE nt_typeはINTのテーブルです。
nt nt_type := nt_type(1);
開始
昇格通知 '%' 、nt(1);
nt.trim(); -- 最後の要素を破棄します。
RAISE NOTICE '%', nt(1); -- アクセス範囲外。
エンド; サンプル結果:
通知: 1
エラー: カウントを超えた下付き文字
コンテキスト: PL/SQL関数inline_code_block 7行目RAISE コレクション内の要素数を超える要素数を破棄する次の例を参照してください。
DECLARE
TYPE nt_typeはINTのテーブルです。
nt nt_type := nt_type(1);
開始
nt.trim(2); -コレクション内の要素数を超える最後の2つの要素を破棄します。
エンド; サンプル結果:
エラー: カウントを超えた下付き文字
CONTEXT: SQL文「CALL nt.trim(2) 」
PL/SQL関数inline_code_block 5行目CALL