Yav*_*sta 4 postgresql dynamic-sql plpgsql
首先,是的,我已经阅读了DO声明的文档:) http://www.postgresql.org/docs/9.1/static/sql-do.html
所以我的问题:
我需要执行一些包含UPDATE语句的动态代码块,并计算所有受影响行的数量.我正在使用Ado.Net提供商.
在Oracle中,解决方案将包含4个步骤:
我怎么能用PostgreSQL做到这一点?我正在使用npgsql提供程序,但如果有帮助可以迁移到devard.
DO语句块很适合执行动态SQL.回报价值并不好.使用plpgsql 函数.
您需要的关键声明是:
GET DIAGNOSTICS integer_var = ROW_COUNT;
Run Code Online (Sandbox Code Playgroud)
示例代码:
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;
Run Code Online (Sandbox Code Playgroud)
呼叫:
SELECT * FROM f_upd_some();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5693 次 |
| 最近记录: |