Search Postgresql Archives

Re: using a function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/6/2010 2:45 AM, Filip Rembiałkowski wrote:
2010/1/5 Andy Colson <andy@xxxxxxxxxxxxxx <mailto:andy@xxxxxxxxxxxxxx>>

    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.rembialkowski@xxxxxxxxx
<mailto:filip.rembialkowski@xxxxxxxxx>
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

--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux