Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle 11g:Gibt es in PL/SQL eine Möglichkeit, Informationen über eingefügte und aktualisierte Zeilen nach der MERGE DML-Anweisung zu erhalten?

Es gibt keine integrierte Möglichkeit, separate Einfüge- und Aktualisierungszähler zu erhalten, nein. SQL%ROWCOUNT würde Ihnen die Anzahl der zusammengeführten Zeilen mitteilen, wie Sie wahrscheinlich bereits wissen, aber es gibt kein Äquivalent, um separate Werte für die Einfügungen und Aktualisierungen zu erhalten.

Dieser Artikel von Adrian Billington zeigt eine Möglichkeit, die Informationen zu erhalten, indem ein Funktionsaufruf in die Zusammenführung eingefügt wird, was zu einem kleinen Overhead führen kann.

Es gibt einen ähnlichen und vielleicht einfacheren Trick von MichaelS in den Oracle-Foren , was ich natürlich auch überhaupt nicht loben kann. Ich bin versucht, es hier zu reproduzieren, aber ich bin mir nicht sicher, ob das erlaubt ist, aber im Wesentlichen verwendet es sys_context um eine Zählung aufrechtzuerhalten, ähnlich wie es Adrians Lösung mit einer Paketvariablen tat. Ich würde dieses verwenden, da es sauberer ist und meiner Meinung nach einfacher zu verfolgen und zu warten ist.

Immer noch gefährlich nah an einer Nur-Link-Antwort, aber ich möchte auch nicht die Arbeit anderer plagiieren ...