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

Oracle 11g:I PL/SQL er der nogen måde at få info om indsatte og opdaterede rækker efter MERGE DML-sætning?

Der er ikke en indbygget måde at få separate indsætnings- og opdateringstal, nej. SQL%ROWCOUNT ville fortælle dig antallet af flettede rækker, som du sikkert allerede ved, men der er ingen ækvivalent til at få separate værdier for indsættelser og opdateringer.

Denne artikel af Adrian Billington viser en måde at få oplysningerne på ved at inkludere et funktionskald i fletningen, hvilket kan tilføje lidt overhead.

Der er et lignende, og måske enklere, trick fra MichaelS på Oracle-foraerne , hvilket jeg selvfølgelig heller ikke kan tage æren for. Jeg er fristet til at gengive det her, men jeg er ikke sikker på, om det er tilladt, men i bund og grund bruger det sys_context at vedligeholde en optælling, stort set på samme måde som Adrians løsning gjorde med en pakkevariabel. Jeg ville bruge den, da den er renere, og jeg synes, den er nemmere at følge og vedligeholde.

Stadig faretruende tæt på et svar med kun link, men jeg vil heller ikke plagiere andres arbejde...



  1. SQLite MIN

  2. Hvordan kan jeg hente en tabel fra lagret procedure til en datatabel?

  3. Tilknytning af feltet ORACLE TIMESTAMP(9) til java.util.Date

  4. Sådan forbinder du (Py)Spark til Postgres database ved hjælp af JDBC