【发布时间】: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?
标签: postgresql plpgsql postgresql-9.4