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

Comment utiliser le nom de la partition comme paramètre dans l'instruction select ?

Comme déjà indiqué dans mes commentaires, je pense PARALLEL n'a aucun sens (mais je n'en suis pas sûr) et exécuter chaque partition une par une est également inutile lorsque vous copiez une table entière.

Quoi qu'il en soit, votre code devrait fonctionner lorsque vous l'écrivez comme ceci :

FOR i in products_tab.first .. products_tab.last LOOP
   EXECUTE IMMEDIATE 'ALTER SESSION FORCE PARALLEL DML PARALLEL 24';
   EXECUTE IMMEDIATE 'INSERT /*+ APPEND PARALLEL(24) */ INTO tbla2
      ("ID", datetime, ...)
   SELECT * 
   FROM tbl1 PARTITION ('||products_tab(i).partition_name||)';
   COMMIT;

END LOOP;

Je ne connais pas vos besoins mais peut-être Échanger des partitions et des sous-partitions pourrait être une option pour vous.