Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
postgresql函数-如何返回行的数据集_Postgresql_Stored Procedures_Lua - Fatal编程技术网

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

postgresql函数-如何返回行的数据集,postgresql,stored-procedures,lua,Postgresql,Stored Procedures,Lua,我正在尝试创建一个返回多行的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;

我正在尝试创建一个返回多行的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

您可以从输出中引用列名(如果您知道它们)。例如,如果小部件表中有名为col1、col2、col3的列,则可以发出:

SELECT col1, col2, col3
FROM getallwidgets();

这就是你想要的吗?

你确定吗?我刚刚在我的数据库上测试了这段代码,我收到的实际上是单独的字段。你能从widgets表中提供你的输出和一些数据示例吗?cathulu,我已经更新了我的帖子。查看edit1