Received: from localhost (unknown [200.46.208.211]) by mail.postgresql.org (Postfix) with ESMTP id 4E91F635EDD for ; Thu, 20 Aug 2009 13:39:16 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.208.211]) (amavisd-maia, port 10024) with ESMTP id 27183-10 for ; Thu, 20 Aug 2009 16:39:04 +0000 (UTC) X-Greylist: delayed 00:05:34.619886 by SQLgrey-1.7.6 Received: from mail-iw0-f186.google.com (mail-iw0-f186.google.com [209.85.223.186]) by mail.postgresql.org (Postfix) with ESMTP id 5BED76347E4 for ; Thu, 20 Aug 2009 13:39:05 -0300 (ADT) Received: by iwn16 with SMTP id 16so11327iwn.15 for ; Thu, 20 Aug 2009 09:39:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :from:date:message-id:subject:to:cc:content-type :content-transfer-encoding; bh=Cf3iBp9CaIjPDv1qDB9d8FcUZ07F0NLOApBGZkfEaDw=; b=OsdW/pVpFMmJoYxbodH0deJLatADSjVv+zBmLiG6jRXHM6iMFJhGw5n5KGjLCy1eOF 16SZn1TZy0Ii6BxTnT6IU91jJUcTyBsaJec8zvkjXhIESaO7FsU80895SGhfpCegF3Ee d+xvbGq8QoCUNC2fXfYO82zvT+Cg/GFBs2ou4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; b=UHBRMy354FlM9FqzegPQz68lfvUCzCUe7Vdi8JT2dTIR/nHWtYmK20fQ7KUGNEc8dR /Ow1Y07W0gSNGCurSS/53QRZFeuaCq7aD/mPgoEKIhFF1zYaIET67tk97SZxTsQFmIqt mnnlhHeZXvOd1wYwNtoypLEnMUzIobjpaLjFE= MIME-Version: 1.0 Received: by 10.231.39.205 with SMTP id h13mr4677666ibe.54.1250786009203; Thu, 20 Aug 2009 09:33:29 -0700 (PDT) In-Reply-To: <4A8D6912.60207@fmed.uba.ar> References: <4A8D6912.60207@fmed.uba.ar> From: =?UTF-8?Q?Rodrigo_E=2E_De_Le=C3=B3n_Plicet?= Date: Thu, 20 Aug 2009 11:33:14 -0500 Message-ID: Subject: Re: using case to select 'which version to use' To: Gerardo Herzig Cc: pgsql-sql@postgresql.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-2.599 tagged_above=-10 required=5 tests=BAYES_00=-2.599 X-Spam-Level: X-Archive-Number: 200908/113 X-Sequence-Number: 33022 On Thu, Aug 20, 2009 at 10:17 AM, Gerardo Herzig wrote= : > Hi all. I have 2 functions , which returns the same columns, but with > tottaly different logics. I want to wrap it with a third function, who > will receive a boolean argument to decide wich sub-function have to use. > > I want to use case, so i dont have to use pl/pgsql. > > This is a non-working example: > > > CREATE OR REPLACE FUNCTION get_oferta(varchar, varchar, varchar, bool, > OUT cod varchar , OUT description varchar) > returns setof record > security definer > as > $$ > select =C2=A0* from case $4 when true then > =C2=A0 =C2=A0(select * from get_oferta_from_a($1, $2, $3)) > else > =C2=A0 =C2=A0(select * from get_oferta_from_b($1, $2, $3)) > end; > $$ language sql; > > Can i use case for a case like this? > > Thanks! > Gerardo Try: SELECT * FROM get_oferta_from_a ($1, $2, $3) WHERE $4 UNION ALL SELECT * FROM get_oferta_from_b ($1, $2, $3) WHERE NOT $4;