Oracle
 sql >> Base de données >  >> RDS >> Oracle

PLSQL :Alternative à la procédure stockée pour des performances optimales

Dans Oracle, vous n'avez normalement pas besoin d'utiliser des tables temporaires globales pour ce genre de choses, vous pouvez plutôt utiliser le traitement en masse avec des tableaux :

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;

C'est juste un exemple minimal - voir cet article pour plus de détails.