PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Variable contenant le nombre de lignes affectées par la suppression précédente ? (dans une fonction)

Dans Oracle PL/SQL, la variable système pour stocker le nombre de lignes supprimées/insérées/mises à jour est :

SQL%ROWCOUNT

Après une instruction DELETE / INSERT / UPDATE, et BEFORE COMMITTING, vous pouvez stocker SQL%ROWCOUNT dans une variable de type NUMBER. N'oubliez pas que COMMIT ou ROLLBACK remettent à ZÉRO la valeur de SQL%ROWCOUNT, vous devez donc copier la valeur SQL%ROWCOUNT dans une variable AVANT COMMIT ou ROLLBACK.

Exemple :

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;

J'ai également trouvé cette SOLUTION intéressante (source :http://markmail.org/message/grqap2pncqd6w3sp )