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 要素が含まれます。