Сброс Ассоциативного массива в МН / SQL?

Эти повышение присваивается, библиотека , кажется, точно, что Вы ищете. Это делает константы присвоения к контейнерам легче чем когда-либо.

9
задан steve 13 November 2009 в 20:47
поделиться

2 ответа

Самый простой способ:

arr_foos.Delete();

Другой способ - объявить переменную внутри цикла FOR . Таким образом, он будет воссоздаваться для каждого прохода.

Примерно так:

DECLARE
 TYPE foo_record IS RECORD (foo%type, bar%type);
 TYPE foo_records IS TABLE OF foo_record INDEX BY PLS_INTEGER;     

 CURSOR monkeys is SELECT primates FROM zoo;
 row_monkey monkeys%rowtype;
BEGIN
 FOR row_monkey IN monkeys loop
  DECLARE
    arr_foos foo_records;
  BEGIN
    null;
  END;
 END LOOP;
END;
27
ответ дан 4 December 2019 в 07:23
поделиться

Вы собираетесь считывать данные из таблицы зоопарка в коллекцию? Тогда есть лучший способ:

DECLARE
  type foos_ts is table of zoo.foo%type index by pls_integer;
  foos foos_t;
BEGIN
  select foo
  bulk collect into foos
  from zoo;
  ...
END;

Bulk collect автоматически очищает коллекцию перед выборкой, и это работает быстрее, чем чтение построчно в цикле. К сожалению, он не работает с записями, поэтому вам понадобится несколько таблиц PL / SQL для каждого поля.

Вы можете найти дополнительную информацию здесь: Получение результатов запроса в коллекции с помощью предложения BULK COLLECT

]
3
ответ дан 4 December 2019 в 07:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: