В Oracle обикновено не е необходимо да използвате глобални временни таблици за такива неща, по-скоро можете да използвате групова обработка с масиви:
declare
cursor c is
select col1, col2 from my_view;
type t is table of c%rowtype;
array t;
begin
open c;
loop
fetch c bulk collect into array limit 1000;
exit when array.count = 0;
for i in 1..array.count loop
null; -- Perform business logic on array(i) here
end loop;
forall i in 1..array.count
insert into final_table (col1, col2)
values (array(i).col1, array(i).col2);
end loop;
close c;
end;
Това е само минимален пример - вижте тази статия за повече подробности.