在PostgreSQL中,如何创建返回实际表的函数?

在PostgreSQL中,如何创建返回实际表的函数?,postgresql,plpgsql,postgresql-9.4,Postgresql,Plpgsql,Postgresql 9.4,在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 = _t

在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);
如果我运行
选择cols('test')我得到:

    cols
-------------
 (a,text)
 (b,integer)
 (c,numeric)
(3 rows)
但我希望能够:

 column_name | data_type
-------------+-----------
 a           | text
 b           | integer
 c           | numeric
(3 rows)

函数很好,这就是你如何调用它

而不是:

SELECT cols('test');
使用


函数很好,这就是你如何调用它

而不是:

SELECT cols('test');
使用


@jdigital确实解决了我的问题,但我仍然不知道它是否完全回答了我的问题。还有,你是怎么发现的?因为我在谷歌上搜索过,所以,我仔细查看了类似的问题链接。我在谷歌上搜索了“postgresreturntable”。我对此不熟悉,希望了解更多。也许这将有助于回答您的其他问题:您正在执行一个没有FROM的SELECT,请参见此处:@jdigital确实解决了我的问题,但我仍然不知道它是否完全回答了我的问题。还有,你是怎么发现的?因为我在谷歌上搜索过,所以,我仔细查看了类似的问题链接。我在谷歌上搜索了“postgresreturntable”。我不熟悉这一点,希望了解更多。也许这将有助于回答您的其他问题:您正在进行选择,但没有来自,请参见此处: