После каждого вызова процедуры копируйте полученные данные в другую таблицу с такими же столбцами:
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;