Pl / Sql Как изменить элементы коллекции без использования цикла - PullRequest
1 голос
/ 12 июня 2019

Я хочу изменить индексы элементов коллекции без использования какого-либо цикла. Как я могу это сделать?

declare
   type NumberList is table of pls_integer;
   nlist NumberList := NumberList(1,2,3,4,5,6,7,8,9,10);
   n_first pls_integer := 1;
   n_last pls_integer := 10;

Я хочу сделать nlist как (10,9,8,7,6,5,4,3,2,1). Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Вы можете заказать элементы в списке выбора и собрать результат в новый список.

  select * bulk collect into nlist2 from (
    select column_value from table(nlist) order by 1 desc
  );

Ваша вложенная таблица должна быть объявлена ​​как глобальный тип

CREATE or replace TYPE NumberList  IS TABLE OF pls_integer;

, чем вы.можно использовать

declare
   nlist NumberList := NumberList(1,2,3,4,5,6,7,8,9,10);
   n_first pls_integer := 1;
   n_last pls_integer := 10;
   nlist2 NumberList 
begin
  select * bulk collect into nlist2 from (
    select column_value from table(nlist) order by 1 desc
  );


end;
0 голосов
/ 12 июня 2019

Вложенные таблицы не упорядочены, поэтому на самом деле ваш запрос не имеет особого смысла.

Если вы хотите получить элементы в определенном порядке, используйте

select column_value from table(nlist) order by 1 desc

Обратите внимание, что вы можете хранить такие массивы в таблицах, но при повторном выборе этих элементов порядок элементов может быть произвольным, см. Вложенные таблицы :

В базе данных вложенная таблица - это тип столбца, в котором хранится неопределенное количество строк в произвольном порядке.

При извлечении значения вложенной таблицы из базы данных в PL / SQL переменная вложенной таблицы, PL / SQL дает строки последовательных индексов, начиная с 1. Используя эти индексы, вы можете получить доступ к отдельным строкам переменной вложенной таблицы. Синтаксис: переменная_имя (индекс). индексы и порядок строк во вложенной таблице могут оставаться нестабильными сохранить и извлечь вложенную таблицу из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...