Adalberto,

Basicamente o MERGE faz um INSERT e onde no insert daria a exception (se vc
usasse uma procedure) DUP_VAL_ON_INDEX, entra um comando de UPDATE:


merge into sim_utilizacao_diaria_cartao sud
using (select
   nr_produto
   , nr_interno
   , trunc(dt_validacao) dt_validacao
   , count(*) qtde
from
   sim_validacao_arquivo
where
   dt_operacao >= '31/05/2006'
   AND DT_OPERACAO <= '05/06/2006'
   AND (NR_PRODUTO = 182 OR NR_PRODUTO = 202 OR NR_PRODUTO > 209)
group by
    nr_produto
    , nr_interno
    , trunc(dt_validacao)) sva
on (sva.nr_produto = sud.nr_produto
   and sva.nr_interno = sud.nr_interno
   and sva.dt_validacao = sud.dt_validacao
)
when matched then
   update set sud.qt_validacoes = sud.qt_validacoes + sva.qtde
when not matched then
   insert (nr_produto, nr_interno, dt_validacao, qt_validacoes)
   values (sva.nr_produto, sva.nr_interno, sva.dt_validacao, sva.qtde);

 
Ederson Elias de Oliveira
DBA Oracle
Setransp - Goiânia-GO
-------------------------------------------------------------------
________________________________________
De: [email protected] [mailto:[EMAIL PROTECTED] Em
nome de Adalberto de Sousa Monteiro
Enviada em: sexta-feira, 9 de junho de 2006 17:32
Para: [email protected]
Assunto: [oracle_br] Comando MERGE

Boa tarde a todos,
Alguém poderia me enviar um modelo / exemplo de como utilizo o comando Merge
no oracle 9i ?

Estou precisando atualizar algumas tabelas com resultado de select´s em
outras tabelas.
Antes eu estava com oracle 8i e fiz tudo utilizando cursores para dar update
quando ja fosse existente e insert quando não. Agora mudamos nossa versão
para 9i e eu gostaria mudar as rotinas para o merge.

Valeu pessoal e bom final de semana
Adalberto



--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/[email protected]/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a