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

How to display column headers returned by PostgreSQL function?

我有以下 PostgreSQL 函数,它 returns 来自 table 的多个列:

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 = ;
$$
LANGUAGE 'sql';

结果 returns 看起来像这样:

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

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

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

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

您可以在查询中使用 "as"。 Select id为id,username为用户名....

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

SELECT * FROM userbyid(1);

相对于

SELECT userbyid(1);

这里是dbfiddle演示

示例输出:

 id | username |       email       |       last_login
----+----------+-------------------+------------------------
  1 | user1    | user1@example.com | 2017-06-13 12:00:00-04

您需要格式化 PostgreSQL 以显示列 headers; 设置为:

\t

这可以在 PSQL 帮助中看到

\?