хранение строк из таблицы с использованием pl / sql - PullRequest
0 голосов
/ 28 июля 2011

Мне нужно несколько раз вызывать процедуру, которая затем заполняет таблицу. Проблема в том, что процедура усекает таблицу после каждого вызова. Я должен хранить результаты таблицы для каждого запуска. Я посмотрел документацию и не смог понять, как это сделать в pl / sql. Любые идеи очень ценятся.

спасибо большое!

Ответы [ 2 ]

1 голос
/ 28 июля 2011

После каждого вызова процедуры копируйте полученные данные в другую таблицу с такими же столбцами:

INSERT INTO TABLE_B
SELECT *
FROM TABLE_A;

Когда вы закончите вызывать процедуру, все ваши данные будут в TABLE_B.

В PL / SQL это выглядит следующим образом:

BEGIN
  FOR I IN 1..10 LOOP

    PROC(I);

    INSERT INTO TABLE_B
    SELECT *
    FROM TABLE_A;

  END LOOP;

  PROCESS_ALL_DATA();
END;

Обновление:

Если у вас нет прав для создания таблиц, тогдаВы можете сохранить частичные результаты в таблице PL / SQL (в памяти):

DECLARE
  TYPE T_T_A IS TABLE OF A%TYPE;

  L_IMED_TABLE T_T_A;

BEGIN
  FOR I IN 1..10 LOOP

    PROC(I);

    SELECT * BULK COLLECT INTO L_IMED_TABLE
    FROM A;

  END LOOP;

  FOR I IN L_IMED_TABLE.FIRST .. L_IMED_TABLE.LAST LOOP
    PROCESS_RESULT_ROW( L_IMED_TABLE(I) );
  END LOOP;

END;
0 голосов
/ 28 июля 2011

У вас может быть триггер, который запускается при вставке в основную таблицу и заполняет те же данные в архивной таблице, где вы можете добавить больше столбцов, таких как отметка времени и счетчик вызовов и многое другое.

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