PostgreSQL 9.3手册介绍了此命令
'GET DIAGNOSTICS int_var = ROW_COUNT;' 若要获取上次insert/update命令中受影响的行数,请执行以下操作。当我在图形用户界面(SQL3,pgAdmin编辑器窗格)和Python语言(使用psycopg2包)中尝试时,我得到以下错误:
ERROR: syntax error at or near "GET".我做错了什么?
发布于 2015-06-22 06:27:16
它是后端功能,不是SQL语言的一部分。Psycopg2具有包含此值的cursor.rowcount属性。Libpq /C++库具有PQcmdTuples函数。
发布于 2015-06-21 20:17:11
GET DIAGNOSTICS只能在plpgsql函数内部使用。您不能将其作为常规sql命令执行。看下面这个简单的例子:
create table fruits as
select * from (values
(1, 'banana'),
(2, 'pear'),
(3, 'apple')) f(id, fruit);
create function update_fruits()
returns setof fruits language plpgsql
as $$
declare
n int;
begin
update fruits set id = id+ 1;
get diagnostics n = row_count;
return query select null::int, format ('%s rows updated', n);
return query select * from fruits order by 1;
get diagnostics n = row_count;
return query select null::int, format ('%s rows retrieved', n);
end $$;
select * from update_fruits()
id | fruit
----+------------------
| 3 rows updated
2 | banana
3 | pear
4 | apple
| 3 rows retrieved
(5 rows) https://stackoverflow.com/questions/30964261
复制相似问题