From: | ycrux(at)club-internet(dot)fr |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: PL/pgSQL question |
Date: | 2006-03-10 09:11:40 |
Message-ID: | mnet1.1141981900.18665.ycrux@club-internet.fr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi All!
First of all, a great Thanks, your suggestions works fine.
I'll hope to enhance a little bit my understanding of SETOF return type.
I have now two problems.
1) I would like to return some columns from one table in PL/pgSQL function. What's in this case the correct return type of the PL/pgSQL function. This is a pseudo-code for my first problem:
--------------------------------------------------------------------
CREATE FUNCTION function_name (sometypes) RETURNS return_type AS $$
FOR some_type IN SELECT column1, column3 FROM tablename WHERE some_conditions
LOOP
RETURN NEXT some_type;
END LOOP;
RETURN;
$$ LANGUAGE 'plpgsql' STABLE;
--------------------------------------------------------------------
What's return_type and some_type in this case?
2) The next problem is almost same as above. But now, I would like to return different columns from different tables.
What's in this case the correct return type of PL/pgSQL function.
This is a pseudo-code for my second problem:
--------------------------------------------------------------------
CREATE FUNCTION function_name (sometypes) RETURNS return_type AS $$
FOR some_type IN SELECT column1_table1, column17_table2 FROM table1, table2 WHERE some_conditions
LOOP
RETURN NEXT some_type;
END LOOP;
RETURN;
$$ LANGUAGE 'plpgsql' STABLE;
--------------------------------------------------------------------
Thanks in advance
Younes
----Message d'origine----
>A: Ycrux <ycrux(at)club-internet(dot)fr>
>Copie à: pgsql-general(at)postgresql(dot)org
>Sujet: Re: [GENERAL] PL/pgSQL question
>Date: Thu, 09 Mar 2006 19:25:52 -0500
>De: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
>
>Ycrux <ycrux(at)club-internet(dot)fr> writes:
>> # SELECT grantAccess('sara', 'sarapass');
>> ERROR: set-valued function called in context that cannot accept a set
>
>You need to do "SELECT * FROM grantAccess(...)". This is a plpgsql
>implementation restriction that we'll probably try to fix someday,
>although there's also a school of thought that says that set-returning
>functions in the SELECT targetlist are a bad idea and should be phased
>out.
>
> regards, tom lane
>
>---------------------------(end of broadcast)---------------------------
>TIP 4: Have you searched our list archives?
>
> http://archives.postgresql.org
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Clive Page | 2006-03-10 09:14:27 | Baffled by failure to use index when WHERE uses a function |
Previous Message | Guillaume Lelarge | 2006-03-10 08:17:09 | Re: Out of memory error on pg_restore |