Re: RES: [oracle_br] DUVIDA - Update em LOTE

2007-06-20 Por tôpico agpcardoso
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

2007-06-19 Por tôpico agpcardoso
--- 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

2007-06-19 Por tôpico agpcardoso
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]
>