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

Ray*_*Ray 8 sql postgresql set-returning-functions

我有以下 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';
Run Code Online (Sandbox Code Playgroud)

它返回的结果如下所示:

                        userbyid
--------------------------------------------------------------
(2, smith, smith@example.com, "2017-06-04 19:47:49.472259+00")
Run Code Online (Sandbox Code Playgroud)

是否可以使用正确的列标题显示输出,如下所示:

id         username       email               last_login
--------------------------------------------------------------
2          smith          smith@example.com   2017-06-04
Run Code Online (Sandbox Code Playgroud)

我正在查看 CREATE FUNCTION 文档页面,但不清楚如何执行此操作。我也在网上查了一下,没有看到讨论这个问题的文章。

pet*_*erm 3

FROM在子句中使用您设置的返回函数

SELECT * FROM userbyid(1);
Run Code Online (Sandbox Code Playgroud)

相对于

SELECT userbyid(1);
Run Code Online (Sandbox Code Playgroud)

这是dbfiddle演示

示例输出:

编号 | 用户名 | 电子邮件 | 上次登录
---+----------+--------------------+-------------- ----------
  1 | 用户1 | user1@example.com | 2017-06-13 12:00:00-04