从函数PostgreSQL而不是记录返回多个列和行

2Bi*_*all 4 sql postgresql plpgsql postgresql-9.6

我正在网上阅读关于PostgreSQL上的函数并返回结果在这个链接中:

  1. SQL函数return-type:TABLE vs SETOF记录
  2. 如何在Postgres sql函数中引用命名参数?
  3. http://www.postgresqltutorial.com/plpgsql-function-returns-a-table/

我写过这个函数:

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函数返回多个列

a_h*_*ame 7

返回表(或setof)的函数应该在FROM子句中使用:

select * 
from brand_hierarchy(1234)
Run Code Online (Sandbox Code Playgroud)


2Bi*_*all 3

我能够通过以下查询看到它:

SELECT * FROM brand_hierarchy (id)
Run Code Online (Sandbox Code Playgroud)

  • 此语法可能存在性能问题。为任何输出列调用一次brand_hiearchy函数 (2认同)