加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 15:58:30 所属栏目:百科 来源:网络整理
导读:首先,是的,我已经阅读了DO声明的文档:) http://www.postgresql.org/docs/9.1/static/sql-do.html 所以我的问题: 我需要执行一些包含UPDATE语句的动态代码块,并计算所有受影响行的数量.我正在使用Ado.Net提供商. 在Oracle中,解决方案将包含4个步骤: 将Input
首先,是的,我已经阅读了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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读