计算PostgreSQL中受批处理查询影响的行数

前端之家收集整理的这篇文章主要介绍了计算PostgreSQL中受批处理查询影响的行数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,是的,我已经阅读了DO声明的文档:)
http://www.postgresql.org/docs/9.1/static/sql-do.html

所以我的问题:

我需要执行一些包含UPDATE语句的动态代码块,并计算所有受影响行的数量.我正在使用Ado.Net提供商.

在Oracle中,解决方案将包含4个步骤:

>将InputOutput参数“N”添加到命令
>添加BEGIN … END;命令
> add:N:=:每个语句后的N sql%rowcount.
>它完成了!执行后我们可以从命令中读取N参数.

我怎么能用Postgresql做到这一点?我正在使用npgsql提供程序,但如果有帮助可以迁移到devard.

解决方法

DO语句块很适合执行动态sql.回报价值并不好.使用 plpgsql function.

您需要的关键声明是:

GET DIAGNOSTICS integer_var = ROW_COUNT;

Details in the manual.

示例代码

CREATE OR REPLACE FUNCTION f_upd_some()
  RETURNS integer AS
$func$
DECLARE
   ct int;
   i  int;
BEGIN
   EXECUTE 'UPDATE tbl1 ...';       -- something dynamic here
   GET DIAGNOSTICS ct = ROW_COUNT;  -- initialize with 1st count

   UPDATE tbl2 ...;                 -- nothing dynamic here 
   GET DIAGNOSTICS i = ROW_COUNT;
   ct := ct + i;                    -- add up

   RETURN ct;
END
$func$ LANGUAGE plpgsql;

呼叫:

SELECT * FROM f_upd_some();

猜你在找的Postgre SQL相关文章