| From: | "Pavel Stehule" <pavel(dot)stehule(at)gmail(dot)com> |
|---|---|
| To: | "A B" <gentosaker(at)gmail(dot)com> |
| Cc: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: Howto return values from a function |
| Date: | 2008-05-16 08:17:59 |
| Message-ID: | 162867790805160117j66e2f925w8c772f49b3c9de7d@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
Hello
use SELECT * FROM actionlist(...);
Regards
Pavel Stehule
2008/5/16 A B <gentosaker(at)gmail(dot)com>:
>> How you generate the results is up to you. when you have them you
>> either use RETURN NEXT or RETURN QUERY to return them to the caller.
>
> Now I get the reply
>
> ERROR: set-valued function called in context that cannot accept a set
> CONTEXT: PL/pgSQL function "actionlist" line 11 at return next
>
> and here is the function (and a datatype that is used for the return values)
>
>
> CREATE TYPE Ttelnr_action AS (
> nr VARCHAR(30),
> action CHAR(1)
> );
>
> CREATE OR REPLACE FUNCTION actionlist(tid_ TIMESTAMP) RETURNS SETOF
> Ttelnr_action AS $$
> DECLARE
> rec RECORD;
> result Ttelnr_action;
> BEGIN
> FOR rec IN SELECT DISTINCT custid,nr,action FROM Actions
> LOOP
> IF rec.action = 'view_important_message' THEN
> result.nr := rec.nr;
> result.action := 'd';
> RETURN NEXT result;
> ELSIF rec.action = 'download_movie' THEN
> result.nr := rec.nr;
> result.action := 'v';
> RETURN NEXT result;
> END IF;
> END LOOP;
> RETURN;
> END;
> $$ LANGUAGE plpgsql;
>
> --
> Sent via pgsql-general mailing list (pgsql-general(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Richard Huxton | 2008-05-16 08:19:37 | Re: Howto return values from a function |
| Previous Message | Ian Barwick | 2008-05-16 08:13:46 | Re: Howto return values from a function |