Re: Scaler forms as function arguments - Mailing list pgsql-sql

From Richard Huxton
Subject Re: Scaler forms as function arguments
Date
Msg-id 200311261725.21975.dev@archonet.com
Whole thread Raw
In response to Scaler forms as function arguments  (Andreas Tille <tillea@rki.de>)
Responses Re: Scaler forms as function arguments  (Andreas Tille <tillea@rki.de>)
Re: Scaler forms as function arguments  (Joe Conway <mail@joeconway.com>)
List 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


pgsql-sql by date:

Previous
From: mohan@physics.gmu.edu
Date:
Subject: Postgres: MS Access and Tomcat
Next
From: Richard Huxton
Date:
Subject: Re: Postgres: MS Access and Tomcat