微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算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.

您需要的关键声明是:

@H_502_31@GET DIAGNOSTICS integer_var = ROW_COUNT;

Details in the manual.

示例代码

@H_502_31@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;

呼叫:

@H_502_31@SELECT * FROM f_upd_some();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐