Thread: selecting a attribute from a function

selecting a attribute from a function

From
"A.j. Langereis"
Date:
Dear all,

I have written a function that returns a set. This set is of a type I made, containing multiple attributes.
 
create type my_type as (col1 int, col2 int)
 
Something likes this works:
 
select col1 from my_pg_func('hello');
 
But how can I do something like this:
 
select my_pg_func(table2.some_col).col1
from table2.some_col
 
Yours,
 
Aarjan

Re: selecting a attribute from a function

From
Michael Fuhr
Date:
On Thu, Nov 24, 2005 at 11:47:53AM +0100, A.j. Langereis wrote:
> But how can I do something like this:
>
> select my_pg_func(table2.some_col).col1
> from table2.some_col

Use another set of parentheses around the function call, as at the
end of this example:

CREATE TYPE test_type AS (col1 integer, col2 integer);

CREATE FUNCTION test_func() RETURNS test_type AS $$
DECLARE
    retval  test_type;
BEGIN
    retval.col1 := 123;
    retval.col2 := 456;
    RETURN retval;
END;
$$ LANGUAGE plpgsql;

SELECT * FROM test_func();
 col1 | col2
------+------
  123 |  456
(1 row)

SELECT (test_func()).col1;
 col1
------
  123
(1 row)

--
Michael Fuhr