PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Variabile contenente il numero di righe interessate dalla precedente DELETE? (in una funzione)

In Oracle PL/SQL, la variabile di sistema per memorizzare il numero di righe eliminate/inserite/aggiornate è:

SQL%ROWCOUNT

Dopo un'istruzione DELETE / INSERT / UPDATE e BEFORE COMMITTING, è possibile memorizzare SQL%ROWCOUNT in una variabile di tipo NUMBER. Ricorda che COMMIT o ROLLBACK reimpostano a ZERO il valore di SQL%ROWCOUNT, quindi devi copiare il valore di SQL%ROWCOUNT in una variabile PRIMA DI COMMIT o ROLLBACK.

Esempio:

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;

Ho trovato anche questa interessante SOLUZIONE (fonte:http://markmail.org/message/grqap2pncqd6w3sp )