Continuo achando que é 'problema' interno, quando o banco se 'perde' com a 
ordem das colunas.

Isso é o que acontece com inserts simples, e deve ser a causa do uso de cursor, 
deixando o banco chutar a ordem das colunas.

Anderson.

--- Em oracle_br@yahoogrupos.com.br, "sergio_oracle" <mandaproser...@...> 
escreveu
>
> --- Em oracle_br@yahoogrupos.com.br, Júlio César Corrêa <juliotubista@> 
> escreveu
> >
> > O seu erro mostra outra coisa.Que você está tentando inserir um valor null
> > em uma coluna not null.
> > Verifique se está correto este insert nas colunas corretas e coisa e tal.Se
> > persistir ae pode ser outra coisa(bug) não sei.
> > Mas por enquanto o erro é outro.
> > 
> > 2009/3/11 sergio_oracle <mandaprosergio@>
> > 
> > >   Estou tendo dificuldade ao usar o FORALL para inserir registros em uma
> > > tabela em outro banco Oracle, ligados por dblink
> > > O erro sempre apresentado é ORA-01400 cannot insert NULL
> > >
> > > Como preciso enviar dados de uma tabela para outra em grandes quantidades,
> > > estava pensando em usar o bulk collet, mas parece que não funciona bem
> > > quando se usa em conjunto com dblink. Fiz um teste em uma tabela local do
> > > banco e funcionou perfeitamente.
> > >
> > > Antes estava usando o INSERT com SELECT e funciona de forma bem rápida,
> > > cerca de 50.000 em 7 segundos.
> > > Mas como a quantidade de registros pode chegar a 2.000.000, comecei a usar
> > > CURSOR e, inserindo linha a linha, os mesmos 50.000 demorou 2 minutos.
> > >
> > > Alguma sugestão ou exemplo de como posso fazer essa transmissão de
> > > registros de forma rápida?
> > >
> > >  
> > >
> > 
> > 
> > 
> > -- 
> > Júlio César Corrêa
> > IS Technologist - Oracle DBA
> > http://jccorrea.blogspot.com
> > 
> > "To stay competitive in the tech industry, never stop
> > learning. Always be on the lookout for better ways of
> > doing things and new technologies. Our industry does
> > not reward people who let themselves stagnate"
> > –John Hall, Senior Vice President, Oracle University
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> 
> Pois é Júlio, o erro é estranho, pois acho que estou fazendo tudo certo.
> 
> Eu crio um tipo tabela index by de acordo com um cursor que possui os mesmos 
> campos e na ordem da tabela destino.
> Uso o bulk collect para carregar esta tabela. 
> Até aí ocorre tudo bem e depois uso :
> 
> FORALL i IN 1..t_movimentos.count
>             INSERT INTO movimen...@dbl_homolog
>                  VALUES t_movimentos(i);
> 
> Acontece que se ao invés do forall, eu usar o for "normal" os registros são 
> inseridos perfeitamente, assim:
> FOR i IN 1..t_movimentos.count
>         LOOP
>             INSERT INTO movimen...@dbl_homolog
>              ( campo_1..campo_n)
>             VALUES ( t_movimentos(i).campo_1 .. 
>                      t_movimentos(i).campo_n)
>         END LOOP;
>


Responder a