am Mon, dem 30.06.2008, um 14:25:30 +0200 mailte A B folgendes: > I did read the select line also, and > select * from foo() as (a integer, b integer, c integer); > gives me unfortunatly the error > ERROR: record "retval" is not assigned yet > DETAIL: The tuple structure of a not-yet-assigned record is indeterminate. Okay, right, i see. You can rewrite your function using IN/OUT-parameters. For instance, your function: CREATE OR REPLACE FUNCTION foo() RETURNS SETOF RECORD AS $$ DECLARE retval RECORD; BEGIN some loop retval.jd := tmp.id; retval.d2 := _c2; retval.d3 := _c3; RETURN NEXT retval; end loop return; END; rewrite to: CREATE OR REPLACE FUNCTION foo(OUT jd int, OUT d2 int, OUT d3 int) RETURNS SETOF RECORD AS $$ BEGIN some loop jd := tmp.id; d2 := _c2; d3 := _c3; RETURN NEXT; end loop; return; END; *untested*. Hope that helps, Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) NGnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net