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