gpt4 book ai didi

postgresql - 如何使用 pgAdmin 4.2 获取从 PG/PLSQL 中的函数返回的整个表数据或多行数据?

转载 作者:行者123 更新时间:2023-12-05 05:11:48 27 4
gpt4 key购买 nike

我尝试使用 setof 和 table。pgAdmin 4.2 中创建函数时,没有称为 setof 或 table 的返回类型。如果我使用 setof 和表名创建函数作为选定的返回类型,它只会返回一行表。

CREATE FUNCTION pgsql_returnrecords() RETURNS SETOF RECORD(name char, city, char, id integer) AS 
$BODY$
DECLARE
rec RECORD;
BEGIN
select name,city,id INTO rec from test;
return next rec;
END;
$BODY$ language plpgsql;

我希望我的函数返回包含所有行和列的表数据。

最佳答案

要么是returns setof record要么是returns table(....)或者是setof table_namereturns setof record 您必须在使用 函数时指定列名。

您也没有返回完整的结果,因为您只获取一行,将其放入记录并返回。要返回一个真正的“集合”,您需要在 PL/pgSQL 中使用 return query。但是这样的函数最好写成 SQL 函数:

CREATE FUNCTION pgsql_returnrecords() 
RETURNS table(name text, city text, id integer)
AS
$BODY$
select name,city,id
from test;
$BODY$
language sql;

如果你想总是从表 test 中返回完整的行,你可以使用 returns setof test 而不是 returns table(..)

CREATE FUNCTION pgsql_returnrecords() 
RETURNS setof test
AS
$BODY$
select *
from test;
$BODY$ language sql;

或者,如果您坚持使用 PL/pgSQL:

CREATE FUNCTION pgsql_returnrecords() 
RETURNS table(name text, city text, id integer)
AS
$BODY$
BEGIN
return query
select name,city,id
from test;
END;
$BODY$
language plpgsql;

在这两种情况下,您都必须在 FROM 子句中像使用表一样使用函数:

select *
from pgsql_returnrecords() ;

关于postgresql - 如何使用 pgAdmin 4.2 获取从 PG/PLSQL 中的函数返回的整个表数据或多行数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55126965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com