Re: using a function

From: Filip Rembiałkowski <plk(dot)zuber(at)gmail(dot)com>
To: Andy Colson <andy(at)camavision(dot)com>
Cc: PostgreSQL <pgsql-general(at)postgresql(dot)org>
Subject: Re: using a function
Date: 2010-01-06 08:45:10
Message-ID: 92869e661001060045m19793753nd22e9e10a36bfafd@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

2010/1/5 Andy Colson <andy(at)camavision(dot)com>

> I have a function that's working for what I needed it to do, but now I need
> to call it for every id in a different table... and I'm not sure what the
> syntax should be.
>
> Here is an example:
>
> create or replace function test(uid integer, out vhrs integer, out phrs
> integer, out fhrs integer)
> returns setof record as $$
> begin
> vhrs := uid + 1;
> phrs := uid + 2;
> fhrs := uid + 3;
> return next;
> end;
> $$ language 'plpgsql';
>
>
> I currently use it once, I know the id, and just call:
>
> select * from test(42);
>
> all is well.
>
>
> But now I need to call it for every record in my employee table.
>
> I tried:
>
> select id, vhrs, phrs, fhrs
> from employee, test(id)
>
> I also tried an inner join, but neither work. Any hints how I might do
> this?
>
> # select id, test(id) from ids;
id | test
----+---------
1 | (2,3,4)
2 | (3,4,5)
3 | (4,5,6)
(3 rows)

is this what you want? if not, maybe
# select id, (select vhrs from test(id)) as vhrs, (select phrs from
test(id)) as phrs, (select fhrs from test(id)) as fhrs from ids;

note: declare your function volatility - see
http://www.postgresql.org/docs/8.4/static/xfunc-volatility.html
note: in above example, a VIEW would be enough.

--
Filip Rembiałkowski
JID,mailto:filip(dot)rembialkowski(at)gmail(dot)com
http://filip.rembialkowski.net/

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Simon Riggs 2010-01-06 09:37:53 Re: PostgreSQL Write Performance
Previous Message hx.li 2010-01-06 07:48:58 FULL JOIN is only supported with merge-joinable join conditions