Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como usar o nome da partição como um parâmetro na instrução select?


Como já foi dito em meus comentários, acho que PARALLEL não faz nenhum sentido (mas não tenho certeza disso) e executar cada partição uma por uma também é inútil quando você copia a tabela inteira.

De qualquer forma, seu código deve funcionar quando você o escreve assim:
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;

Não conheço seus requisitos, mas talvez Trocando Partições e Subpartições pode ser uma opção para você.