Muito Obrigado Mestre Chiappa!! Sou grande admirador seu ja tem um tempo. Estou começando no oracle. Ja havia lido outro artigo seu sobre as tabelas externas.. só o que ocorre: Os arquivos .txt sao gerados sequencialmente com nomes distintos!! Desta forma nao tem como utilizar a GTT. Nao sei se conseguiremos alterar a aplicaçao para receber estes arquivos. De inicio estou tentando achar uma forma de criar um type fora da proc e passar apenas uma ( variavel := array ) como parametro da proc.
Obrigado. --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> escreveu > > Ah, só outro detalhe : se vc não for usar a opção de external e ficar > com a arquitetura atual, EVIDENTEMENTE, arays consomem RAM, tem > limites práticos, pra grande volume é INSUPERÁVEL a opção de se ter > uma GLOBAL TEMPORARY TABLE sendo preenchida pelo tal oci e fazer > INSERT appends , merges e quetais nas tabelas reais com select from > GTT - pra isso basta que a tal oci conecte em modo dedicado (sem pool) > e mantenha a conexão, isso é tranquilo numa rotina de carga, imagino eu. > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <jlchiappa@> escreveu > > > > Bom, respondendo à sua pergunta, pra começo de conversa vc não diz a > > versao de banco, mas desde a 8i um stored PL/SQL pode receber como > > parâmetro qquer datatype SQL, inclusive definidos pelo usuário ** e > > ** o PL/SQL desde essa versão aceita coleções desses datatypes, > > tranquilamente vc poderia ter um datatype record com o seu formato de > > registro E ter uma table of desse cara, > > > http://asktom.oracle.com/pls/asktom/f? p=100:11:0::::P11_QUESTION_ID:208012348074#4448954729709 > > tem exemplo e discussão a respeito. > > Noto porém que SE a sua for uma versão de banco com Suporte (ie, 9i e > > acima), vc NÃO NECESSARIAMENTE precisaria dessa rotina extra, vc > > tranquilamente poderia ter uma external table e fazer o INSERT/UPDATE > > (ou até mesmo o novo comando MERGE!!) lendo *** diretamente *** do > > arquivo texto - essa opção do 9i de fazer SELECT dum arquivo- texto > > (external table) nunca deixa de me surpreender em performance, se vc > > não a considerou recomendo experimentar, seria algo tipo : > > > > BEGIN > > loop > > if dbms_applicaton_info.get_client_info.. = 'STOP' then > > exit; > > end if; > > procquebuscanomedearq; -- pode ser external function , java, etc > > alter table externaltable nnn; -- mudar nome do arq a ler > > insert /*+ APPEND */ into tabelareal > > (select * from externaltableapontandoproarquivo); > > -- ou MERGE, se quiser > > end loop; > > END; > > > > > > []s > > > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br, "Asley" <mineiro_foa@> escreveu > > > > > > Pessoal, alguem pode me ajudar?! > > > > > > Recebo um arquivo .txt que atraves de uma OCI (c++) é carregada p/ > > > oracle - De 1 em 1 segundo esta OCI recebe um arquivo .txt > > > Depois de carregado os dados, temos uma proc para que faz um insert > > > e update para outras tabelas!! > > > > > > O problema é, em vez de passar apenas uma linha na proc passar já > > > várias linhas!! Do jeito q está a proc perde muito tempo executando > > > apenas uma linha qdo é executada!! > > > > > > > > > CREATE OR REPLACE procedure insere_daf ( pcodigodaf > > > historicodaf.codigodaf%type, > > > pdatasistema number, > > > pdatagps number, > > > pdataequipamento number, > > > pvelocidade historicodaf.velocidade%type, > > > pproa historicodaf.proa%type, > > > ptiporesposta historicodaf.tiporesposta%type, > > > pestado historicodaf.estado%type, > > > pcodigoobjeto historicodaf.codigoobjeto%type, > > > pposicaox number, > > > pposicaoy number ) > > > is > > > > > > vposicao historicodaf.posicao%type; > > > vdatasistema historicodaf.datasistema%type; > > > vdatagps historicodaf.datagps%type; > > > vdataequipamento historicodaf.dataequipamento%type; > > > vcodigohistorico historicodaf.codigohistorico%type; > > > > > > begin > > > ... > > > > > > end; > > > / > > > > > > Se alguem poder me dá uma luz.. > > > Atenciosamente, > > > Asley > > > > > >