Re: [oracle_br] Utilização do Comando Merge

2008-08-29 Por tôpico francisco porfirio
Por exemplo:

Tenho tabela tb_origem e tb_destino

tb_origem possui
10 reg. que não tem na tb_destino
e possui 15 que possuim em ambos, porém dos 15, 10 foram modificados.

Desta forma ao executar o merge eu queria que ele fizess da seguinte forma:
20 merge
10 Inserts
10 Updates

Mas ele atualiza todos, com isso fica da seguinte forma:
25 Merge
10 inserts
15 Updates




-- 
Atenciosamente
Francisco Porfirio Ribeiro Neto


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



Re: [oracle_br] Utilização do Comando Merge

2008-08-28 Por tôpico Marcio Portes
??
Não entendi qual a sua necessidade.

2008/8/28 francisco porfirio <[EMAIL PROTECTED]>

>   Marcio, xou de bola esse site
>
> Pessoa queria mais uma ajuda
>
> Tipo ele ta comparando apenas pela pk tendo igual ele sempre altera os
> registros. Quero que ele altere apenas quando estes registros forem
> diferentes. Coloquei as clausulas no on, mas não ta funcionando. Com isso
> esta mais ou menos assim.
>
> BEGIN
> MERGE INTO inf_coberturas M
> USING t.inf_coberturas T
> ON (m.cob_codigo_cobertura = t.cob_codigo_cobertura
> AND (m.cob_descricao = t.cob_descricao
> OR m.cob_mapa_cobertura = t.cob_mapa_cobertura
> OR m.cob_cod_intercambio_ptu = t.cob_cod_intercambio_ptu
> OR m.cob_mapa_alterado = t.cob_mapa_alterado))
> WHEN MATCHED THEN UPDATE SET m.cob_descricao = t.cob_descricao,
> m.cob_mapa_cobertura = t.cob_mapa_cobertura
> WHEN NOT MATCHED THEN INSERT
> VALUES(CASE etl.merge_counter(etl.c_inserting) WHEN 0
> THEN t.cob_codigo_cobertura END,
> t.cob_descricao,t.cob_mapa_cobertura,
> t.cob_cod_intercambio_ptu,
> t.cob_mapa_alterado);
>
> DBMS_OUTPUT.PUT_LINE(TO_CHAR(SQL%ROWCOUNT) || ' - Linhas
> merged.');
> dbms_output.put_line(TO_CHAR(etl.get_merge_insert_count) ||' - Linhas
> Inseridas');
> dbms_output.put_line(TO_CHAR(etl.get_merge_update_count( SQL%ROWCOUNT ))
> ||' - Linhas Alteradas');
> END;
>
>
> --
> Atenciosamente
> Francisco Porfirio Ribeiro Neto
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Marcio Portes
http://mportes.blogspot.com


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



Re: [oracle_br] Utilização do Comando Merge

2008-08-28 Por tôpico francisco porfirio
Marcio, xou de bola esse site

Pessoa queria mais uma ajuda

Tipo ele ta comparando apenas pela pk tendo igual ele sempre altera os
registros. Quero que ele altere apenas quando estes registros forem
diferentes. Coloquei as clausulas no on, mas não ta funcionando. Com isso
esta mais ou menos assim.



BEGIN
MERGE INTO inf_coberturas M
USING t.inf_coberturas T
ON (m.cob_codigo_cobertura = t.cob_codigo_cobertura
AND (m.cob_descricao  = t.cob_descricao
 OR m.cob_mapa_cobertura  = t.cob_mapa_cobertura
 OR m.cob_cod_intercambio_ptu = t.cob_cod_intercambio_ptu
 OR m.cob_mapa_alterado   = t.cob_mapa_alterado))
WHEN MATCHED THEN UPDATE SET m.cob_descricao = t.cob_descricao,
 m.cob_mapa_cobertura = t.cob_mapa_cobertura
WHEN NOT MATCHED THEN INSERT
  VALUES(CASE etl.merge_counter(etl.c_inserting) WHEN 0
THEN t.cob_codigo_cobertura END,
 t.cob_descricao,t.cob_mapa_cobertura,
 t.cob_cod_intercambio_ptu,
t.cob_mapa_alterado);

   DBMS_OUTPUT.PUT_LINE(TO_CHAR(SQL%ROWCOUNT) || ' - Linhas
merged.');
   dbms_output.put_line(TO_CHAR(etl.get_merge_insert_count) ||' - Linhas
Inseridas');
   dbms_output.put_line(TO_CHAR(etl.get_merge_update_count( SQL%ROWCOUNT ))
||' - Linhas Alteradas');
END;


-- 
Atenciosamente
Francisco Porfirio Ribeiro Neto


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



Re: [oracle_br] Utilização do Comando Merge

2008-08-27 Por tôpico Marcio Portes
http://www.quest-pipelines.com/newsletter-v4/0903_D.htm

2008/8/27 francisco porfirio <[EMAIL PROTECTED]>

>   Pessoal...
>
> Sei que muitos já devem conhecer este comando, mas para aqueles que não
> conhecem, vai uma boa dica para fazer algumas migrações mais simples. Com
> esse comando vc consegue tanto contemplar novos registros de uma tabela
> como
> atualizar os que foram alterados.
>
> A sintaxe é mais ou menos com esta:
>
> MERGE INTO tb_destino d
> USING tb_origem o
> ON (d.codigo = o.codigo)
> WHEN MATCHED THEN d.descricao = o.descricao
> WHEN not MATCHED THEN
> INSERT (d.codigo,d.descricao)
> VALUES (d.codigo, d.descricao);
>
> Para aqueles que já utilizaram, vocês sabem me informar se tem alguma forma
> de o merge me retornar quantas linhas foram atualizadas e quantas foram
> inseridas?
>
> Agradeço desde já...
>
> --
> Atenciosamente
> Francisco Porfirio Ribeiro Neto
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Marcio Portes
http://mportes.blogspot.com


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