Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle 11g:in PL/SQL esiste un modo per ottenere informazioni sulle righe inserite e aggiornate dopo l'istruzione MERGE DML?

Non esiste un modo integrato per ottenere conteggi separati di inserimento e aggiornamento, no. SQL%ROWCOUNT ti direbbe il numero di righe unite, come probabilmente già saprai, ma non esiste un equivalente per ottenere valori separati per gli inserimenti e gli aggiornamenti.

Questo articolo di Adrian Billington mostra un modo per ottenere le informazioni includendo una chiamata di funzione nell'unione, che potrebbe aggiungere un po' di sovraccarico.

C'è un trucco simile, e forse più semplice, da MichaelS sui forum Oracle , di cui non posso nemmeno prendere alcun merito, ovviamente. Sono tentato di riprodurlo qui ma non sono sicuro che sia consentito, ma essenzialmente sta usando sys_context per mantenere un conteggio, più o meno allo stesso modo in cui la soluzione di Adrian faceva con una variabile di pacchetto. Lo userei, perché è più pulito e penso che sia più facile da seguire e mantenere.

Ancora pericolosamente vicino a una risposta solo link, ma non voglio nemmeno plagiare il lavoro degli altri...