PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Variable, die die Anzahl der Zeilen enthält, die von vorherigem DELETE betroffen sind? (in einer Funktion)

In Oracle PL/SQL lautet die Systemvariable zum Speichern der Anzahl gelöschter/eingefügter/aktualisierter Zeilen:

SQL%ROWCOUNT

Nach einer DELETE / INSERT / UPDATE-Anweisung und BEFORE COMMITTING können Sie SQL%ROWCOUNT in einer Variablen vom Typ NUMBER speichern. Denken Sie daran, dass COMMIT oder ROLLBACK den Wert von SQL%ROWCOUNT auf NULL zurücksetzen, also müssen Sie den Wert von SQL%ROWCOUNT in eine Variable kopieren, BEVOR COMMIT oder ROLLBACK.

Beispiel:

BEGIN
   DECLARE
      affected_rows   NUMBER DEFAULT 0;
   BEGIN
      DELETE FROM feeds_item
            WHERE shareurl = re1;

      affected_rows := SQL%ROWCOUNT;
      DBMS_OUTPUT.
       put_line (
            'This DELETE would affect '
         || affected_rows
         || ' records in FEEDS_ITEM table.');
      ROLLBACK;
   END;
END;

Ich habe auch diese interessante LÖSUNG gefunden (Quelle:http://markmail.org/message/grqap2pncqd6w3sp ). )