DELETE 方法删除集合中的条目。您可以通过三种不同的方式调用 DELETE 方法。
使用 DELETE 方法的第一种形式删除集合中的所有条目:
collection.DELETE
使用 DELETE 方法的第二种形式从集合中删除指定的条目:
collection.DELETE(subscript)
使用 DELETE 方法的第三种形式从集合中删除 first_subscript 和 last_subscript 指定的范围内的条目(包括 first_subscript 和 last_subscript 条目)。
collection.DELETE(first_subscript, last_subscript)
如果 first_subscript 和 last_subscript 引用不存在的元素,则删除指定下标之间的元素。如果 first_subscript 大于 last_subscript,或者您为其中一个参数指定 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 个元素。
文档内容是否对您有帮助?