如何从PostgreSQL 9.0函数(“存储过程”)获取数据集

如何从PostgreSQL 9.0函数(“存储过程”)获取数据集,postgresql,stored-procedures,dataset,Postgresql,Stored Procedures,Dataset,我试图从PostgreSQL 9.0函数中获取数据集,但无法使用存储过程 本周我是博士后新手,所以让我解释一下我的术语: 在pgAdmin III中,我可以输入以下命令: SELECT * FROM member; 并接收以下数据输出: memberid membername 1 Bill Smith 2 Joe Smith 我尝试创建了许多函数(tables/SETOF/etc),非常像: CREATE OR REPLACE FUNCTION get

我试图从PostgreSQL 9.0函数中获取数据集,但无法使用存储过程

本周我是博士后新手,所以让我解释一下我的术语:

在pgAdmin III中,我可以输入以下命令:

SELECT * FROM member;
并接收以下数据输出:

memberid   membername
1          Bill Smith
2          Joe Smith
我尝试创建了许多函数(tables/SETOF/etc),非常像:

CREATE OR REPLACE FUNCTION get_all_members()
RETURNS SET OF member AS
'select * from member;'
当我在pgAdmin中运行它们(或从程序中调用它们)时,我得到以下结果:

SELECT get_all_members()
结果:

get_all_members
member
(1, "Bill Smith")
(2, "Joe Smith")
是否可以像直接输入SQL命令一样从函数(存储过程)中获取数据集


非常感谢您的帮助

您可以通过稍微修改select语句来获得每列输出,如下所示:

SELECT * FROM get_all_members()
这将为您提供一列一列的输出,就像正常执行查询一样


请参见文档中的。

我得到了相同的结果。实际上,pgAdmin III已经为我添加了SQL语言。我已经通过answer进行了修改,我认为SQL语言解决了这个问题,但是您需要修改后续的SQL查询,您尝试从函数中获取数据,因此它看起来像:
SELECT*from get_all_members()
没有问题。欢迎来到StackOverflow!如果你觉得答案有帮助/解决了,点击答案旁边的复选标记,将其标记为接受。谢谢Suhail-我点击了复选标记-因为我是新来的,所以我不能“投票”你的答案!!!该输出是一个包含记录的单列,这是一种复合类型。PostgreSQL支持将行视为值
SELECT get_all_members()
的作用相当于
SELECT x FROM get_all_members()x
当您需要
SELECT*FROM get_all_members()
时。