在 PostgreSQL 中,如何创建一个返回实际表的函数? [复制]
Posted
技术标签:
【中文标题】在 PostgreSQL 中,如何创建一个返回实际表的函数? [复制]【英文标题】:In PostgreSQL how do I create a function that returns an actual table? [duplicate] 【发布时间】:2016-06-23 02:18:22 【问题描述】:在 PostgreSQL 中如何创建一个返回实际表的函数?
例如,如果我有以下功能:
CREATE OR REPLACE FUNCTION cols(_table_name TEXT)
RETURNS TABLE (column_name TEXT,
data_type TEXT) AS
$$
SELECT column_name,
data_type
FROM information_schema.columns
WHERE table_name = _table_name
ORDER BY column_name
;
$$ LANGUAGE sql;
还有下表:
CREATE TABLE test (a TEXT, b INTEGER, c NUMERIC);
如果我运行SELECT cols('test');
,我会得到:
cols
-------------
(a,text)
(b,integer)
(c,numeric)
(3 rows)
但我希望能够得到:
column_name | data_type
-------------+-----------
a | text
b | integer
c | numeric
(3 rows)
【问题讨论】:
@jdigital 这确实解决了我的问题,但我仍然不知道它是否完全回答了我的问题。还有,你是怎么发现的?因为我在 Google 和 SO 上进行了搜索,并且仔细查看了类似问题的链接。 我在谷歌上搜索了“postgres 返回表”。我对此并不熟悉,想了解更多。 也许这将有助于解决您的其余问题:您正在执行没有 FROM 的 SELECT,请参见此处:What does a SELECT statement without FROM used for? 【参考方案1】:函数没问题,就是你调用它的方式。
代替:
SELECT cols('test');
使用
SELECT * FROM cols('test');
【讨论】:
以上是关于在 PostgreSQL 中,如何创建一个返回实际表的函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何创建 PostgreSQL db-f1-micro 实例?