如何显示由PostgreSQL函数返回的列标题?

7
我有以下的PostgreSQL函数,它从一个表中返回多列数据:
CREATE OR REPLACE FUNCTION userbyid(id integer)
RETURNS TABLE(id int, username character varying(30), email character varying(254), last_login timestamp with time zone) AS
$$
SELECT
    id,
    username,
    email,
    last_login
FROM
    auth_user
WHERE
    id = $1;
$$
LANGUAGE 'sql';

它返回的结果如下所示:
                        userbyid
--------------------------------------------------------------
(2, smith, smith@example.com, "2017-06-04 19:47:49.472259+00")

是否有可能显示正确的列标题输出,类似于以下内容:

id         username       email               last_login
--------------------------------------------------------------
2          smith          smith@example.com   2017-06-04

我正在查看CREATE FUNCTION文档页面,但并不清楚如何操作。我也在网上搜索过,没有找到相关文章。

3个回答

3
FROM子句中使用您的返回集函数。
SELECT * FROM userbyid(1);

与...相反
SELECT userbyid(1);

这是一个dbfiddle演示链接:dbfiddle 样例输出:
 id | username |       email       |       last_login
----+----------+-------------------+------------------------
  1 | user1    | user1@example.com | 2017-06-13 12:00:00-04

3
你需要设置 PostgreSQL 以显示列标题。使用以下命令进行设置:
\t
\?

0

在查询中,您可以使用 "as"。 选择 Id as id, username as username....


"as" 对我有效:SELECT ar.invnumber as "发票号码", ar.amount as "发票总额", ar.transdate as "发票日期", customer.name as "客户名称", acc_trans.amount as "已收金额", acc_trans.transdate as "收款日期" - guillouj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接