Re: Scaler forms as function arguments

From: Richard Huxton <dev(at)archonet(dot)com>
To: Andreas Tille <tillea(at)rki(dot)de>, PostgreSQL SQL <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Scaler forms as function arguments
Date: 2003-11-26 17:25:21
Message-ID: 200311261725.21975.dev@archonet.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Wednesday 26 November 2003 15:40, Andreas Tille wrote:
> Hi,
>
> I want to write a function of the following type
>
> CREATE FUNCTION test ( <scalar form type> )
> RETURNS setof MyTable
> AS
> 'SELECT * FROM MyTable WHERE id IN $1'
> LANGUAGE 'SQL' ;

Not as you've done it. You could pass in text "(1,2,3)", build your query and
use EXECUTE to execute it. Alternatively, you might be able to do it with an
array parameter (sorry, I don't use arrays, so I can't be sure).

> I was not able to find a reference whether this is possible and if yes
> how to specify the argument type and how to call this function to hand over
> the list for the IN clause correctly.
>
> Next question. Is there any example how to return a SETOF MyTable in
> a plpgsql function? I tried
>
> CREATE FUNCTION test2()
> RETURNS setof MyTable
> AS '
> DECLARE
> result SETOF MyTable ;
> BEGIN
> result := (SELECT * FROM MyTable);
> RETURN result ;
> END; ' LANGUAGE 'plpgsql';

Read the section on plpgsql in the manuals, you return results one at a time.
For some examples, see http://techdocs.postgresql.org/ and look for the "Set
Returning Functions" item.
--
Richard Huxton
Archonet Ltd

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Richard Huxton 2003-11-26 17:27:23 Re: Postgres: MS Access and Tomcat
Previous Message mohan 2003-11-26 16:20:43 Postgres: MS Access and Tomcat