Re: RES: [oracle_br] DUVIDA - Update em LOTE
GALERA, VALEU PELA AJUDA, Fabio Santos, eu tava viajando, o código q vc me passou depois de testa-lo funcionou corretamente. É que só olhando me pareceu q ia fazer outra coisa... VALEU GALERA --- Em oracle_br@yahoogrupos.com.br, "Fabio Santos" <[EMAIL PROTECTED]> escreveu > > Update tab3 set Dsc = (select tab1.dsc from tab1 where tab1.id = tab3.id) > > > > Não se essa query é igual a que vc diz estar lenta porque voce nao passou a > tal query. > > > > abraços > > > > > > _ > > De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em > nome de agpcardoso > Enviada em: terça-feira, 19 de junho de 2007 19:05 > Para: oracle_br@yahoogrupos.com.br > Assunto: [oracle_br] DUVIDA - Update em LOTE > > > > Estou alterando uma rotina de carga onde preciso fazer um update em > 1 campo da tabela 3 de acordo c/ os dados q tiverem na tabela 1. > > Na rotina ORIGINAL para cada registro da tabela 3 está sendo feito > um select na tabela 1 e atualizando a tabela 3 de acordo com o q > vier na tabela 1, porém devido a quantidade grande de registros > existentes nas 2 tabelas, essa rotina está MUITO LENTA. > > NO SQL SERVER eu resolveria esse problema utilizando a query > descrita abaixo, porem no Oracle essa query não funciona. > > Alguém saberia me dizer como posso fazer no oracle a mesma coisa q a > query abaixo faz no sql server??? > > Obrigado. > > ## > QUERY > ## > > UPDATE TAB3 > SET TAB3.DSC = TAB1.DSC > FROM TAB1, TAB3 > WHERE TAB1.ID = TAB3.ID > > > > > > [As partes desta mensagem que não continham texto foram removidas] >
Re: RES: [oracle_br] DUVIDA - Update em LOTE 02
--- Em oracle_br@yahoogrupos.com.br, "agpcardoso" <[EMAIL PROTECTED]> escreveu O q está lento não é a query e sim a rotina em si pois está sendo varrido registro a registro. Essa query q vc me passou, para o q estou precisando não funciona, pois utilizando a query q me passou, vai estar sendo atualizado TODAS as dsc da TAB3 que me retornar na query (select tab1.dsc from tab1 where tab1.id = tab3.id) e não é isso q eu quero... O que eu quero é o seguinte: Tabela 3 | | Id |Dsc| | | 1| Alexandre| 2| Vanessa | 3| fulano | Tabela 1 Id | Dsc | 1| Alexandre Cardoso 2| Vanessa Serrano NO SQL SERVER SE EU SIMPLESMENTE EXECUTAR O COMANDO ABAIXO 1 UNICA VEZ UPDATE TAB3 SET TAB3.DSC = TAB1.DSC FROM TAB1, TAB3 WHERE TAB1.ID = TAB3.ID A TABELA 3 VAI FICAR COM O SEGUINTE CONTEUDO Tabela 3 Id |Dsc | 1| Alexandre Cardoso 2| Vanessa Serrano 3| fulano Gostaria de saber como fazer a mesma coisa no oracle da mesma maneira, sem precisar varrer registro a registro --- Em oracle_br@yahoogrupos.com.br, "Fabio Santos" escreveu > > Update tab3 set Dsc = (select tab1.dsc from tab1 where tab1.id = tab3.id) > > > > Não se essa query é igual a que vc diz estar lenta porque voce nao passou a > tal query. > > > > abraços > > > > > > _ > > De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em > nome de agpcardoso > Enviada em: terça-feira, 19 de junho de 2007 19:05 > Para: oracle_br@yahoogrupos.com.br > Assunto: [oracle_br] DUVIDA - Update em LOTE > > > > Estou alterando uma rotina de carga onde preciso fazer um update em > 1 campo da tabela 3 de acordo c/ os dados q tiverem na tabela 1. > > Na rotina ORIGINAL para cada registro da tabela 3 está sendo feito > um select na tabela 1 e atualizando a tabela 3 de acordo com o q > vier na tabela 1, porém devido a quantidade grande de registros > existentes nas 2 tabelas, essa rotina está MUITO LENTA. > > NO SQL SERVER eu resolveria esse problema utilizando a query > descrita abaixo, porem no Oracle essa query não funciona. > > Alguém saberia me dizer como posso fazer no oracle a mesma coisa q a > query abaixo faz no sql server??? > > Obrigado. > > ## > QUERY > ## > > UPDATE TAB3 > SET TAB3.DSC = TAB1.DSC > FROM TAB1, TAB3 > WHERE TAB1.ID = TAB3.ID > > > > > > [As partes desta mensagem que não continham texto foram removidas] > Fim da mensagem encaminhada ---
Re: RES: [oracle_br] DUVIDA - Update em LOTE
O q está lento não é a query e sim a rotina em si pois está sendo varrido registro a registro. Essa query q vc me passou, para o q estou precisando não funciona, pois utilizando a query q me passou, vai estar sendo atualizado TODAS as dsc da TAB3 que me retornar na query (select tab1.dsc from tab1 where tab1.id = tab3.id) e não é isso q eu quero... O que eu quero é o seguinte: Tabela 3 | Tabela 1 | Id |Dsc|Id | Dsc | | | 1| Alexandre|1| Alexandre Cardoso 2| Vanessa |2| Vanessa Serrano 3| fulano | NO SQL SERVER SE EU SIMPLESMENTE EXECUTAR O COMANDO ABAIXO 1 UNICA VEZ UPDATE TAB3 SET TAB3.DSC = TAB1.DSC FROM TAB1, TAB3 WHERE TAB1.ID = TAB3.ID A TABELA 3 VAI FICAR COM O SEGUINTE CONTEUDO Tabela 3 Id |Dsc | 1| Alexandre Cardoso 2| Vanessa Serrano 3| fulano Gostaria de saber como fazer a mesma coisa no oracle da mesma maneira, sem precisar varrer registro a registro --- Em oracle_br@yahoogrupos.com.br, "Fabio Santos" <[EMAIL PROTECTED]> escreveu > > Update tab3 set Dsc = (select tab1.dsc from tab1 where tab1.id = tab3.id) > > > > Não se essa query é igual a que vc diz estar lenta porque voce nao passou a > tal query. > > > > abraços > > > > > > _ > > De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em > nome de agpcardoso > Enviada em: terça-feira, 19 de junho de 2007 19:05 > Para: oracle_br@yahoogrupos.com.br > Assunto: [oracle_br] DUVIDA - Update em LOTE > > > > Estou alterando uma rotina de carga onde preciso fazer um update em > 1 campo da tabela 3 de acordo c/ os dados q tiverem na tabela 1. > > Na rotina ORIGINAL para cada registro da tabela 3 está sendo feito > um select na tabela 1 e atualizando a tabela 3 de acordo com o q > vier na tabela 1, porém devido a quantidade grande de registros > existentes nas 2 tabelas, essa rotina está MUITO LENTA. > > NO SQL SERVER eu resolveria esse problema utilizando a query > descrita abaixo, porem no Oracle essa query não funciona. > > Alguém saberia me dizer como posso fazer no oracle a mesma coisa q a > query abaixo faz no sql server??? > > Obrigado. > > ## > QUERY > ## > > UPDATE TAB3 > SET TAB3.DSC = TAB1.DSC > FROM TAB1, TAB3 > WHERE TAB1.ID = TAB3.ID > > > > > > [As partes desta mensagem que não continham texto foram removidas] >