DELETE¶
DELETE メソッドは、コレクションからエントリを削除します。 DELETE メソッドは、3つの異なる方法で呼び出すことができます。
DELETE メソッドの最初の形式を使用して、コレクションからすべてのエントリを削除します。
<collection>.DELETE
DELETE メソッドの2番目の形式を使用して、指定したエントリをコレクションから削除します。
<collection>.DELETE(<subscript>)
DELETE メソッドの3番目の形式を使用して、 first_subscript と last_subscript で指定された範囲内のエントリ( first_subscript と last_subscript のエントリを含む)をコレクションから削除します。
<collection>.DELETE(<first_subscript>, <last_subscript>)
first_subscript および last_subscript が存在しない要素を参照する場合、指定された添え字の間の範囲にある要素は削除されます。 first_subscript が last_subscript より大きい場合、または引数の1つに NULL の値を指定した場合、 DELETE は効果がありません。
エントリを削除しても、添え字はコレクションに残ることに注意してください。代替エントリで添え字を再利用できます。 DELETE メソッドの呼び出しに存在しない添え字を指定した場合、 DELETE は例外を発生させません。
次の例は、 DELETE メソッドを使用して、コレクションから添え字 0 を持つ要素を削除する方法を示しています。
DECLARE
TYPE sparse_arr_typ IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
sparse_arr sparse_arr_typ;
v_results VARCHAR2(50);
v_sub NUMBER;
BEGIN
sparse_arr(-100) := -100;
sparse_arr(-10) := -10;
sparse_arr(0) := 0;
sparse_arr(10) := 10;
sparse_arr(100) := 100;
DBMS_OUTPUT.PUT_LINE('COUNT: ' || sparse_arr.COUNT);
sparse_arr.DELETE(0);
DBMS_OUTPUT.PUT_LINE('COUNT: ' || sparse_arr.COUNT);
v_sub := sparse_arr.FIRST;
WHILE v_sub IS NOT NULL LOOP
IF sparse_arr(v_sub) IS NULL THEN
v_results := v_results || 'NULL ';
ELSE
v_results := v_results || sparse_arr(v_sub) || ' ';
END IF;
v_sub := sparse_arr.NEXT(v_sub);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Results: ' || v_results);
END;
COUNT: 5
COUNT: 4
Results: -100 -10 10 100
COUNT は、 DELETE メソッドの前に、コレクションに 5 要素があったことを示します。 DELETE メソッドが呼び出された後、コレクションには 4 要素が含まれます。