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