问题
I was reading online about function on PostgreSQL and returns results In this links:
- SQL function return-type: TABLE vs SETOF records
- How do I reference named parameters in Postgres sql functions?
- http://www.postgresqltutorial.com/plpgsql-function-returns-a-table/
I have written this Function:
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;
Which works and return the results in a single column Type of record. Note that might more than one row will return.
Now the response is:
record
(1172,1172,1011,0)
(1172,1412,10,40)
.....
I would like to get my results not as a record but as multiple columns
|---------|---------|------------|----------------|
| topID |accountId|liveRowCount|archiveRowCount |
|---------|---------|------------|----------------|
| 1172 |1172 | 1011 | 0 |
| 1172 |1412 | 10 | 40 |
Is there a way to return multiple columns from a PostgreSQL function
回答1:
Functions returning a table (or setof) should be used in the FROM clause:
select *
from brand_hierarchy(1234)
回答2:
I was able to see it as expected with this query:
SELECT * FROM brand_hierarchy (id)
来源:https://stackoverflow.com/questions/49299858/return-multiple-columns-and-rows-from-a-function-postgresql-instead-of-record