我有以下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
我正在查看创建函数文档页面,但不清楚如何执行此操作。 我也在网上搜索过,没有看到一篇讨论这个问题的文章。
在 FROM
子句中使用集合返回函数
SELECT * FROM userbyid(1);
而不是
SELECT userbyid(1);
这是 dbfiddle 演示
示例输出:
身份证 |用户名 | 电子邮件 | last_login----+----------+-------------------+------------------------ 1 |用户1 |user1@example.com |2017-06-13 12:00:00-04
你需要格式化PostgreSQL以显示列头;设置它:
\t
这可以在 PSQL 帮助中看到\?
您可以在
查询中使用"as"。选择"Id"作为"ID",选择"用户名"作为用户名。