The DELETE method deletes entries from a collection. You can call the DELETE method in three different ways:
Use the first form of the DELETE method to remove all entries from a collection:
Use the second form of the DELETE method to remove the specified entry from a collection:
Use the third form of the DELETE method to remove the entries that are within the range specified by first_subscript and last_subscript (including the entries for the first_subscript and the last_subscript) from a collection:
If first_subscript and last_subscript refer to non-existent elements, elements that are in the range between the specified subscripts are deleted. If first_subscript is greater than last_subscript or if you specify a value of NULL for one of the arguments, DELETE has no effect.
Note that when you delete an entry, the subscript remains in the collection. You can re-use the subscript with an alternate entry. If you specify a subscript that does not exist in the call to the DELETE method, DELETE does not raise an exception.
The following example demonstrates how to use the DELETE method to remove the element with subscript 0 from the collection:
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 indicates that before the DELETE method, the collection has five elements. After the DELETE method was invoked, the collection contains four elements.