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; >