From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | Piviul <piviul(at)riminilug(dot)it> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: SETOF come ritorno delle funzioni |
Date: | 2012-12-03 07:29:34 |
Message-ID: | CAFj8pRCRaPSSOyOAXfUardAk==BY2scNOdQ6KbqFFv=QSs0+ZQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hello
sorry, a used language in this mailing list is English language
2012/11/30 Piviul <piviul(at)riminilug(dot)it>:
> Ciao a tutti, avrei bisogno di creare una funzione che restituisca un
> insieme di record. Ho visto che è possibile fare restituire ad una
> funzione una tabella di cui si definiscono i campi all'interno della
> funzione stessa
>
> CREATE FUNCTION foo() RETURNS TABLE(id INT, foo TEXT)
>
> Poi nel corpo provo a costruirmi il record da restituire con RETURN NEXT
> ma mi da un errore: RETURN NEXT non può avere un parametro in una
> funzione con parametri OUT a o vicino "r" dove "r" è la variabile di
> tipo record che vorrei accodare all'output.
>
> Vorrei in altre parole fare una funzione tipo:
>
> CREATE OR REPLACE FUNCTION magazzino.foo()
> RETURNS TABLE(id INT, nome TEXT) AS
> $pippo$
> DECLARE
> r RECORD;
> BEGIN
> FOR r in
> SELECT id::int, nome::text
> FROM foo
> LOOP
> RETURN NEXT r;
> END LOOP;
> RETURN;
> END;
> $pippo$ LANGUAGE plpgsql;
>
there should be identifier collision - you cannot simply mix plpgsql
variables and sql identifiers - so you have to use qualified
identifiers - schema.name
CREATE OR REPLACE FUNCTION magazzino.foo()
RETURNS TABLE(id INT, nome TEXT) AS
$pippo$
BEGIN
FOR id, nome in
SELECT foo.id::int, foo.nome::text
FROM foo
LOOP
RETURN NEXT;
END LOOP;
RETURN;
END;
$pippo$ LANGUAGE plpgsql;
Regards
Pavel Stehule
> Cosa sbaglio?
>
> Piviul
>
>
> --
> 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 | Guillaume Lelarge | 2012-12-03 08:07:54 | Re: Bug in postgres 9.2 installation: pg_archivecleanup: command not found |
Previous Message | Karsten Hilbert | 2012-12-03 07:07:04 | Re: Database schema |