Oracle
 sql >> Database >  >> RDS >> Oracle

Come utilizzare il nome della partizione come parametro nell'istruzione select?

Come già affermato nei miei commenti penso PARALLEL non ha alcun senso (ma non ne sono sicuro) ed eseguire ogni partizione una per una è anche inutile quando copi l'intera tabella.

Ad ogni modo, il tuo codice dovrebbe funzionare quando lo scrivi in ​​questo modo:

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;

Non conosco i tuoi requisiti, ma forse Scambio di partizioni e sottopartizioni potrebbe essere un'opzione per te.