Blz ? Então, a opção de carregar os dados do arquivo pra GTT (seja como for,
com SQL ou PL/SQL, bulk ou não, etc), simplesmente ** NÃO FAZ SENTIDO **
frente à opção de EXTERNAL TABLE - não sei se vc a conmhece, mas é uma feature
relativamente antiga que permite que vc use o arquivo-texto DIRETAMENTE NUM
SQL, como se ele fosse uma tabela , SEM a necessidade de carregar os dados pra
dentro do banco, okdoc ?? veja vc, com GTT vc iar fazer ** DUAS ** (2) leituras
completas no arquivo-texto, UMA para carregar o texto pra dentro da GTT e OUTRA
para ir lendo os dados da GTT, com EXTERNAL TABLE vc simplesmente faria um JOIN
(ou mesmo um MERGE - veja
http://www.akadia.com/services/ora_etl.html#The%20MERGE%20Statement para um
exemplo, e o manual de SQL Reference e o de DW Oracle para mais detalhes) !!
Com isso num ÚNICO SQL vc já lê os dados do arquivo-texto e faz a comparação
com os dados da tabela, SEM precisar se preocupar com limites de arrays, SEM
precisar se preocupar com tamanhos de resultsets (pois COMO SABEMOS um SQL pode
manipular Qualquer Quantidade de registros num database Oracle através do
mecanismo de FETCH automático que possui), e ainda por cima via de regra vc
obtém a melhor performance (pois um único SQL significa menos código Pl/SQL a
analisar, um SQL puro pode se beneficiar das transformações/otimizações que o
RDBMS pode fazer, o que um cursor PL/SQL ** TOTALMNENTE nÃO CONSEGUE **), é
tudo de bom...
[]s
Chiappa