Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie verwende ich den Partitionsnamen als Parameter in der Select-Anweisung?

Wie bereits in meinen Kommentaren erwähnt, denke ich PARALLEL macht keinen Sinn (aber da bin ich mir nicht sicher) und es ist auch nutzlos, jede Partition einzeln auszuführen, wenn Sie die gesamte Tabelle kopieren.

Wie auch immer, Ihr Code sollte funktionieren, wenn Sie ihn so schreiben:

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;

Ich kenne Ihre Anforderungen nicht, aber vielleicht Partitionen und Unterpartitionen austauschen könnte eine Option für Sie sein.