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]

Responder a