Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
@@PostgreSQL 9.3中的行数_Postgresql_Postgresql 9.3 - Fatal编程技术网

@@PostgreSQL 9.3中的行数

@@PostgreSQL 9.3中的行数,postgresql,postgresql-9.3,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中如何?AFAIK在PostgreSQL中没有这样的构造,但是行数是从PostgreSQL获

我想返回受上一条语句影响的行数

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

SELECT * FROM Test_table;

SELECT @@ROWCOUNT AS [Number Of Rows Affected];
威尔给出:

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

在PostgreSQL 9.3中如何?

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

更正:一个没有名字的马在他的评论中说,PL/pgSQL中也可以使用类似的东西。另请参见由发布的答案中的示例 阿基里斯·拉姆·纳基尔坎蒂

然而,从程序内部来看,我最初的建议在大多数情况下比使用PL/pgSQL更容易

使用libpq时: 在选择的结果上,可以使用PQntuples确定返回的行数。对于“更新”、“插入”和“删除”,可以使用PQcmdTuples获得受影响的行数

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


对于参考文章中的REF:GET DIAGNOSTICS integer\u var=ROW\u COUNT

如果在存储过程中执行此操作,可以使用
ROW\u COUNT
参见此处:@a\u horse\u和\u no\u name,请给我举个例子好吗?使用函数。手册中有一个例子(我发布的链接)@a_horse_,没有名字,耶!现在明白了。我在编码方面有缺点。非常感谢。当答案不正确时,有没有办法改变被接受的答案?至少从PostgreSQL 7.2(在给出公认答案之前的10年)开始,就有一种方法可以做到这一点。下面给出了正确答案。MAK需要改变这一点。然而,我编辑了我的答案以反映情况,并对其他答案和指向该解决方案的原始评论进行了投票。
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 $$;