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 528D953A41 for ; Thu, 5 May 2005 11:38:26 -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 72814-09 for ; Thu, 5 May 2005 14:38:25 +0000 (GMT) Received: from wproxy.gmail.com (wproxy.gmail.com [64.233.184.199]) by svr1.postgresql.org (Postfix) with ESMTP id 0E0FC53786 for ; Thu, 5 May 2005 11:38:24 -0300 (ADT) Received: by wproxy.gmail.com with SMTP id 68so715843wri for ; Thu, 05 May 2005 07:38:29 -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:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=OpS4F4KaY8A1JMGB778s5IMXHPkRgxK7Gt+IKVo7MnY1z+5NhfEAri0GYkPNvMRXzUsgHIFnLrG2axK/q0A3DQ7Eb9M9MCVsjURE79aCfYOZnfHMbYiCG0SqsCFTR7mMe/D4DrPXOhqNR6v74mh9qtIZABbGefMg+zeguB4ckas= Received: by 10.54.107.17 with SMTP id f17mr229280wrc; Thu, 05 May 2005 07:38:29 -0700 (PDT) Received: by 10.54.72.2 with HTTP; Thu, 5 May 2005 07:38:29 -0700 (PDT) Message-ID: Date: Thu, 5 May 2005 15:38:29 +0100 From: =?ISO-8859-1?Q?Listas_Evandro_=28N=E3o_use_este_en?= =?ISO-8859-1?Q?dere=E7o_para_mensagens_pessoais=29?= Reply-To: =?ISO-8859-1?Q?Listas_Evandro_=28N=E3o_use_este_en?= =?ISO-8859-1?Q?dere=E7o_para_mensagens_pessoais=29?= To: pgsql-sql Subject: Select of a function that returns a array In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline References: X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.273 tagged_above=0 required=5 tests=AWL, DNS_FROM_RFC_ABUSE, RCVD_BY_IP X-Spam-Level: X-Archive-Number: 200505/47 X-Sequence-Number: 21360 Hi guys I'm trying to figure out a way to make this select work even for a wrong va= lue: select mean_and_variancepop('golf', 'temperature'); or select CAST (mean_and_variancepop('golf', 'temperature') AS float(2)); This function return an array the function is: CREATE or replace FUNCTION mean_and_variancepop(var_table varchar, var_col varchar) RETURNS float(2) AS $$ DECLARE curs refcursor; a float; b float; c float; retvals float[2]; sum float:=3D0; BEGIN open curs FOR EXECUTE 'SELECT ' || quote_ident(var_col) || ' FROM ' || quote_ident(var_table); b:=3D0; LOOP -- some computations FETCH curs INTO a; IF NOT FOUND THEN EXIT; -- exit loop END IF; b:=3Db+1; c:=3Da; sum:=3D sum + c; END LOOP; CLOSE curs; retvals[0]:=3D sum / b; retvals[1] :=3D4; RETURN retvals; END; $$ LANGUAGE plpgsql; Thanks -Jr