A query que eu passei anteriormente faz exatamente o que vc quer.

 

Update tab3 set 

Dsc = (select tab1.dsc from tab1 where tab1.id = tab3.id);

 

Se vc quiser que apenas seja atualizado dos ids 20 a 30 pode fazer:

 

Update tab3 set 

Dsc = (select tab1.dsc from tab1 where tab1.id = tab3.id) 

where tab3.id between 20 and 30;





 

  _____  

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de agpcardoso
Enviada em: terça-feira, 19 de junho de 2007 19:51
Para: oracle_br@yahoogrupos.com.br
Assunto: 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 [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br>
os.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: [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br 
[mailto:[EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br>
os.com.br] Em
> nome de agpcardoso
> Enviada em: terça-feira, 19 de junho de 2007 19:05
> Para: [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br>
os.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]
>

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a