PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Variável contendo o número de linhas afetadas pelo DELETE anterior? (em uma função)


No Oracle PL/SQL, a variável do sistema para armazenar o número de linhas excluídas/inseridas/atualizadas é:
SQL%ROWCOUNT

Após uma instrução DELETE/INSERT/UPDATE, e BEFORE COMMITTING, você pode armazenar SQL%ROWCOUNT em uma variável do tipo NUMBER. Lembre-se que COMMIT ou ROLLBACK resetam para ZERO o valor de SQL%ROWCOUNT, então você tem que copiar o valor de SQL%ROWCOUNT em uma variável BEFORE COMMIT ou ROLLBACK.

Exemplo:
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;

Encontrei também esta SOLUÇÃO interessante (fonte:http://markmail.org/message/grqap2pncqd6w3sp )