PostgreSQL函数 - 如何返回数据集的行

我正在尝试创建一个返回多行的 postgresql 函数。下面是代码:

CREATE OR REPLACE FUNCTION getallwidgets()
  RETURNS SETOF widgets AS
$BODY$
 SELECT * FROM widgets;
$BODY$
  LANGUAGE sql VOLATILE
  COST 100
  ROWS 1000;
ALTER FUNCTION getallwidgets()
  OWNER TO postgres;

当我使用 pgadmin3 测试此代码时,我得到一列数据,每个字段用逗号分隔。我想知道如何将每个字段按列名列出,这样当我在调用存储过程的代码中循环遍历数据集时,我可以通过列名引用每个字段。

谢谢。

编辑 1

在 pgadmin3 中,当我运行脚本时,在输出窗格中,我得到以下数据:

(1, "widget1","this is my description", 1)
(2, "another widget","description2", 3)

换句话说,我得到了两行数据,上面的数据出现在一列中。我期望得到:

id      name             description                    user_id
1       "widget1"        "this is my description"         1
2       "another widget" "description2"                   3
点赞
用户2521566
用户2521566

你可以在输出中引用列名(如果你知道它们)。例如,如果你的 widgets 表中有名为 col1、col2、col3 的列,你可以运行以下查询:

SELECT col1, col2, col3
FROM getallwidgets();

这符合你的需求吗?

2013-07-05 14:55:49