Search Postgresql Archives

Re: SETOF come ritorno delle funzioni

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le lundi 03 décembre 2012 à 08:29 +0100, Pavel Stehule a écrit :
> Hello
> 
> sorry, a used language in this mailing list is English language
> 

You're right, of course, but I'll try and answer since I read a bit of
Italian.

Piviul, si deve scrivere in inglese qua, per ottenere delle risposte.


> 2012/11/30 Piviul <piviul@xxxxxxxxxxxx>:
> > 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.
> >

Se ho capito bene, basta usare questo :

CREATE OR REPLACE FUNCTION foo(text) RETURNS TABLE(id INT, nome TEXT, a
text) AS
$pippo$
       SELECT id, nome, $1
       FROM foo;
$pippo$ LANGUAGE sql;

select foo('a');

















> > 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@xxxxxxxxxxxxxx)
> > To make changes to your subscription:
> > http://www.postgresql.org/mailpref/pgsql-general
> 
> 

-- 
Vincent Veyron
http://marica.fr
Logiciel pour département juridique



-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux