MAK*_*MAK 6 postgresql postgresql-9.3
我想返回受最后一个语句影响的行数.
使用Microsoft SQL Server 2008 R2我这样做:
SELECT * FROM Test_table;
SELECT @@ROWCOUNT AS [Number Of Rows Affected];
Run Code Online (Sandbox Code Playgroud)
威尔会给出:
Number Of Rows Affected
-----------------------
10
Run Code Online (Sandbox Code Playgroud)
在PostgreSQL 9.3中怎么样?
小智 9
DO $$
DECLARE
total_rows integer;
BEGIN
UPDATE emp_salary
SET salary = salary+1;
IF NOT FOUND THEN
RAISE NOTICE'Now rows found %';
ELSIF FOUND THEN
GET DIAGNOSTICS total_rows := ROW_COUNT;
-- the above line used to get row_count
RAISE NOTICE'Rows Found : total_rows: %', total_rows;
END IF;
END $$;
Run Code Online (Sandbox Code Playgroud)
据我所知,postgresql 中没有这样的构造,但是行数是从 postgresql 获得的结果的一部分。
更正:正如 a_horse_with_no_name 在他的评论中指出的那样,有类似的东西可以在 PL/pgSQL 中使用。另请参阅 Achilles Ram Nakirekanti 发布的答案中的示例
然而,在程序内部,我最初的建议在大多数情况下比使用 PL/pgSQL 更容易。
使用 libpq 时:根据选择的结果,您可以使用 PQntuples 来确定返回的行数。对于更新、插入和删除,您可以使用 PQcmdTuples 和结果来获取受影响的行数。
其他客户端库通常具有类似的功能。
对于参考文章中的 REF:GET DIAGNOSTICS integer_var = ROW_COUNT;