@@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 $$;
我想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 $$;