当函数返回a TABLE或a时SETOF composite-type,如此示例函数:
CREATE FUNCTION func(n int) returns table(i int, j bigint) as $$
BEGIN
RETURN QUERY select 1,n::bigint
union all select 2,n*n::bigint
union all select 3,n*n*n::bigint;
END
$$ language plpgsql;
Run Code Online (Sandbox Code Playgroud)
结果可以通过各种方法访问:
1)select * from func(3)将产生这些输出列:
i | j ---+--- 1 | 3 2 | 9 3 | 27
2)select func(3)将只生成一个ROW类型的输出列.
func ------- (1,3) (2,9) (3,27)
3)select (func(3)).*会产生#1:
i | j ---+--- 1 | 3 2 | 9 3 | …
我正在网上阅读关于PostgreSQL上的函数并返回结果在这个链接中:
我写过这个函数:
create or replace function brand_hierarchy(account_value int)
RETURNS table (topID INTEGER, accountId INTEGER, liveRowCount bigint,archiveRowCount bigint)
AS
$BODY$
SELECT * FROM my_client_numbers
where accountId = coalesce($1,accountId);
$BODY$
LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud)
哪个工作并将结果返回到单列记录类型.请注意,可能会返回多行.
现在响应是:
record
(1172,1172,1011,0)
(1172,1412,10,40)
.....
Run Code Online (Sandbox Code Playgroud)
我希望我的结果不是作为记录而是作为多列
|---------|---------|------------|----------------|
| topID |accountId|liveRowCount|archiveRowCount |
|---------|---------|------------|----------------|
| 1172 |1172 | 1011 | 0 |
| 1172 |1412 | 10 | 40 |
Run Code Online (Sandbox Code Playgroud)
有没有办法从PostgreSQL函数返回多个列