在 PostgreSQL 中,我如何创建一个 returns 实际 table 的函数?
In PostgreSQL how do I create a function that returns an actual table?
在 PostgreSQL 中,我如何创建一个 returns 实际 table 的函数?
例如,如果我有以下功能:
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;
以及以下 table:
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)
这个函数很好,就是你调用它的方式。
而不是:
SELECT cols('test');
使用
SELECT * FROM cols('test');
在 PostgreSQL 中,我如何创建一个 returns 实际 table 的函数?
例如,如果我有以下功能:
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;
以及以下 table:
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)
这个函数很好,就是你调用它的方式。
而不是:
SELECT cols('test');
使用
SELECT * FROM cols('test');