Мне нужно отсортировать ассоциативный массив, определенный как «таблица числовых индексов с помощью binary_integer». Я могу вручную написать алгоритм быстрой сортировки, но наверняка должен быть способ сортировки моих значений с помощью запроса (упорядочить по) ?
Иллюстрация моей проблемы:
Определение типа моего ассоциативного массива:
create or replace package my_type is
type my_array is table of NUMBER index by binary_integer;
end my_type ;
Для целей тестирования давайте сгенерируем тестовый массив со значениями, которые не отсортированы в порядке возрастания.
declare
test my_array.my_type.;
i number := 10;
begin
while (i > 0) loop
test(10 - i) := i;
i := i - 1;
end loop;
end;
Я бы хотел отсортировать этот массив в порядке возрастания, используя запрос с ORDER BY. Что-то вроде этого:
i := 0;
for query_result_row in (select 1 as val from table(test) order by 1) loop
test(i) := query_result_row.val;
i := i + 1;
end loop;
Такой подход должен быть возможен: «Oracle 12c поддерживает запрос ассоциативных массивов с помощью оператора TABLE, если тип объявлен в спецификации пакета: https://galobalda.wordpress.com/2014/08/02/new-in-oracle-12c-querying-an-associative-array-in-plsql-programs/ "
Я подозреваю, что проблема связана с тем, как я выбираю столбец с порядковыми номерами. По-видимому, это невозможно, но имя столбца отсутствует (так как это ассоциативный массив), поэтому я застрял.