В этом обработчике я удаляю элемент NULL:
if p_arr(i) is null then
p_arr.delete(p_arr(i));
end if;
, но нулевой элемент все еще в коллекции.Как я могу это исправить?Задача состоит в том, чтобы отсортировать элементы в коллекции, но условие состоит в том, что в коллекции может быть значение NULL.Я должен удалить их.
declare
p_arr dbms_sql.Number_Table;
i pls_integer;
procedure do_sort(p_arr in out dbms_sql.Number_Table, p_asc in boolean
default null, p_nulls_last in boolean default null) is
x pls_integer;
p_temp number;
begin
for i in -1..p_arr.COUNT - 2
loop
if p_arr(i) is null then
p_arr.delete(p_arr(i));
end if;
end loop;
end;
begin
p_arr(-1) := 0;
p_arr(0) := -2;
p_arr(1) := 10.1;
p_arr(2) := null;
p_arr(3) := 10.1;
p_arr(4) := -1;
do_sort(p_arr);
i := p_arr.first;
while i is not null loop
dbms_output.put_line('arr('||i||') = '||nvl(to_char(p_arr(i)),
'null')||';');
i := p_arr.next(i);
end loop;
end;