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

¿Cómo usar el nombre de la partición como parámetro en la declaración de selección?

Como ya dije en mis comentarios, creo que PARALLEL no tiene ningún sentido (pero no estoy seguro de eso) y ejecutar cada partición una por una también es inútil cuando copia la tabla completa.

De todos modos, tu código debería funcionar cuando lo escribes así:

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;

No conozco sus requisitos, pero tal vez Intercambio de particiones y subparticiones podría ser una opción para ti.