sql >> Base de Datos >  >> RDS >> Oracle

PLSQL:alternativa al procedimiento almacenado para un rendimiento óptimo

En Oracle, normalmente no necesita usar tablas temporales globales para este tipo de cosas, sino que puede usar el procesamiento masivo con matrices:

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;

Ese es solo un ejemplo mínimo:consulte este artículo para más detalles.