X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 80DB0528B9 for ; Fri, 22 Jul 2005 15:11:39 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 65510-08 for ; Fri, 22 Jul 2005 18:11:37 +0000 (GMT) Received: from wproxy.gmail.com (wproxy.gmail.com [64.233.184.198]) by svr1.postgresql.org (Postfix) with ESMTP id 03D0F52806 for ; Fri, 22 Jul 2005 15:11:36 -0300 (ADT) Received: by wproxy.gmail.com with SMTP id 69so469129wri for ; Fri, 22 Jul 2005 11:11:37 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=EiyclNduKCILjGG2qFnB5YSQ/ogp2qH24PVfxcHDelNsV8e7YKuhZ/M6oKlfYLGgOGVO2FQLDWo6YQHQk/z8UYC3Lk93xVa2x4mRiHTckqgKOuXhmn8n4MNs8U2UbzPkfVFN8NlBY694jS/ko1R6RuEp7Jm2wsD39OP737onOMw= Received: by 10.54.4.65 with SMTP id 65mr1340024wrd; Fri, 22 Jul 2005 11:11:09 -0700 (PDT) Received: by 10.54.65.20 with HTTP; Fri, 22 Jul 2005 11:11:09 -0700 (PDT) Message-ID: <6d8daee3050722111118944657@mail.gmail.com> Date: Fri, 22 Jul 2005 11:11:09 -0700 From: Tony Wasson Reply-To: Tony Wasson To: jim@contactbda.com Subject: Re: Multi-column returns from pgsql Cc: "Mark R. Dingee" , pgsql-sql@postgresql.org In-Reply-To: <20050722165558.M96628@contactbda.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline References: <200507221149.21550.mark.dingee@cox.net> <20050722165558.M96628@contactbda.com> X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.234 tagged_above=0 required=5 tests=AWL, RCVD_BY_IP, UPPERCASE_25_50 X-Spam-Level: X-Archive-Number: 200507/196 X-Sequence-Number: 22174 On 7/22/05, Jim Buttafuoco wrote: > Mark, >=20 > Instead of RETURN NEXT rec.txt1; RETURN NEXT rec.txt2; just use RETURN N= EXT rec; >=20 > then your select statement would be > select * from my_func() as (txt1 text,txt2 text); >=20 > Jim Besides a simple RETURN NEXT, you'll need to return a SETOF some composite type. You can do something like CREATE TYPE twotexts_t AS (txt1 TEXT, txt2 TEXT);=20 CREATE OR REPLACE FUNCTION my_func() returns SETOF twotexts_t AS ' DECLARE rec record; BEGIN FOR rec IN SELECT txt1, txt2 FROM mytable LOOP RETURN NEXT END LOOP; RETURN; END;' language 'plpgsql';