@@ROWCOUNT 在 PostgreSQL 9.3 中

@@ROWCOUNT in PostgreSQL 9.3

我想returns最后一条语句影响的行数。

使用 Microsoft SQL Server 2008 R2 我是这样做的:

SELECT * FROM Test_table;

SELECT @@ROWCOUNT AS [Number Of Rows Affected];

将给予:

Number Of Rows Affected
-----------------------
10

PostgreSQL9.3 怎么样?

据我所知,在 postgresql 中没有这样的构造,但是行数是您从 postgresql 获得的结果的一部分。

更正:正如a_horse_with_no_name 在他的评论中所说,有类似的东西可以在PL/pgSQL 中使用。另请参阅答案中的示例 阿喀琉斯·拉姆·纳基雷坎蒂

在程序中,但我最初的建议在大多数情况下比使用 PL/pgSQL 更容易。

使用 libpq 时: 在 select 的结果上,您可以使用 PQntuples 来确定返回的行数。对于更新、插入和删除,您可以将 PQcmdTuples 与结果一起使用以获得受影响的行数。

其他客户端库通常具有类似的功能。

对于引用文章中的 REF:GET DIAGNOSTICS integer_var = ROW_COUNT;

DO $$
DECLARE
     total_rows integer;
BEGIN
  UPDATE emp_salary
   SET salary = salary+1;
   IF NOT FOUND THEN
      RAISE NOTICE 'No 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 $$;