Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle 11g:Em PL/SQL existe alguma forma de obter informações sobre linhas inseridas e atualizadas após a instrução MERGE DML?


Não existe uma maneira integrada de obter contagens de inserção e atualização separadas, não. SQL%ROWCOUNT informaria o número de linhas mescladas, como você provavelmente já sabe, mas não há equivalente para obter valores separados para as inserções e atualizações.

Este artigo de Adrian Billington mostra uma maneira de obter as informações incluindo uma chamada de função na mesclagem, o que pode adicionar um pouco de sobrecarga.

Há um truque semelhante, e talvez mais simples, de MichaelS nos fóruns da Oracle , pelo qual também não posso levar nenhum crédito, é claro. Estou tentado a reproduzi-lo aqui, mas não tenho certeza se isso é permitido, mas essencialmente está usando sys_context para manter uma contagem, da mesma forma que a solução de Adrian fez com uma variável de pacote. Eu usaria esse, pois é mais limpo e acho mais fácil de seguir e manter.

Ainda perigosamente perto de uma resposta somente de link, mas também não quero plagiar o trabalho de outras pessoas ...