First of all, yes I’ve read documentation for DO statement 🙂
http://www.postgresql.org/docs/9.1/static/sql-do.html
So my question:
I need to execute some dynamic block of code that contains UPDATE statements and calculate the number of all affected rows. I’m using Ado.Net provider.
In Oracle the solution would have 4 steps:
- add InputOutput parameter “N” to command
- add BEGIN … END; to command
- add :N := :N + sql%rowcount after each statement.
- It’s done! We can read N parameter from command, after execute it.
How can I do it with PostgreSQL? I’m using npgsql provider but can migrate to devard if it helps.
My solution is quite simple. In Oracle I need to use variables to calculate the sum of updated rows because
command.ExecuteNonQuery()returns only the count of rows affected by the last UPDATE in the batch.However,
npgsqlreturns the sum of all rows updated by all UPDATE queries. So I only need to callcommand.ExecuteNonQuery()and get the result without any variables. Much easier than with Oracle.