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 文档页面,但不清楚如何执行此操作。我也在网上查了一下,没有看到讨论这个问题的文章。
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
归档时间: |
|
查看次数: |
11169 次 |
最近记录: |