From: | Andy Colson <andy(at)squeakycode(dot)net> |
---|---|
To: | Filip Rembiałkowski <plk(dot)zuber(at)gmail(dot)com>, PostgreSQL <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: using a function |
Date: | 2010-01-06 15:13:59 |
Message-ID: | 4B44A8B7.8040102@squeakycode.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 1/6/2010 2:45 AM, Filip Rembiałkowski wrote:
> 2010/1/5 Andy Colson <andy(at)camavision(dot)com <mailto: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
> <mailto:filip(dot)rembialkowski(at)gmail(dot)com>
> http://filip.rembialkowski.net/
Ah, yes. That works. I don't like the array output so much, but the
sub-select works.
Thank you.
-Andy
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2010-01-06 15:14:51 | Re: set-level update fails with unique constraint violation |
Previous Message | Dean Rasheed | 2010-01-06 15:05:30 | Re: set-level update fails with unique constraint violation |