首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何执行PostgreSQL 'get diagnostics‘

如何执行PostgreSQL 'get diagnostics‘
EN

Stack Overflow用户
提问于 2015-06-21 19:58:49
回答 2查看 13.8K关注 0票数 3

PostgreSQL 9.3手册介绍了此命令

代码语言:javascript
复制
'GET DIAGNOSTICS int_var = ROW_COUNT;' 

若要获取上次insert/update命令中受影响的行数,请执行以下操作。当我在图形用户界面(SQL3,pgAdmin编辑器窗格)和Python语言(使用psycopg2包)中尝试时,我得到以下错误:

代码语言:javascript
复制
ERROR: syntax error at or near "GET".

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-22 06:27:16

它是后端功能,不是SQL语言的一部分。Psycopg2具有包含此值的cursor.rowcount属性。Libpq /C++库具有PQcmdTuples函数。

票数 4
EN

Stack Overflow用户

发布于 2015-06-21 20:17:11

GET DIAGNOSTICS只能在plpgsql函数内部使用。您不能将其作为常规sql命令执行。看下面这个简单的例子:

代码语言:javascript
复制
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)    
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30964261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档