PostgreSQL 9.3中的@@ ROWCOUNT

时间:2015-01-23 11:37:16

标签: postgresql postgresql-9.3

我想返回受最后一个语句影响的行数。

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

SELECT * FROM Test_table;

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

将给出:

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

在PostgreSQL 9.3中怎么样?

2 个答案:

答案 0 :(得分: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 $$;

答案 1 :(得分:0)

AFAIK在postgresql中没有这样的构造,但是行数是你从postgresql获得的结果的一部分。

更正:正如a_horse_with_no_name在他的评论中指出的,可以在PL / pgSQL中使用类似的东西。另见发布的答案示例 Achilles Ram Nakirekanti

从程序内部来看,我的原始建议在大多数情况下更容易使用PL / pgSQL。

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

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