From: Jasen Betts <jasen@xnet.co.nz>
To: pgsql-sql@postgresql.org
Subject: Re: something simple but I can't
Date: 29 Jan 2011 03:46:37 GMT
Message-ID: <ii02it$dcm$1@reversiblemaps.ath.cx> (raw)
References: <201101281716.04534.johnf@jfcomputer.com>
On 2011-01-29, John Fabiani <johnf@jfcomputer.com> wrote:
> Hi guys,
> I trying to return a 0.00 from a function it there are no records found else
> return the amount.
> select sum(aropen_paid) into _paidamt FROM public.aropen where
> aropen_applyto is not null and (aropen_applyto = $1) ;
>
> IF (FOUND) THEN
> RETURN _paidamt ;
> END IF;
>
> RETURN 0.00 ;
> But all I get is either a blank or the amount paid. What am I doing wrong???
> Johnf
how many rows does the query return when no rows match the where?
It returns 1 that looks like ( NULL ).
it return 1 row, which is more than zero thus FOUND is TRUE.
you can fix your function by changing the IF to
IF _paidamt IS NOT NULL
but if you change the sum to
coalesce(sum(aropen_paid),0.00)
you can do the task more simply like this:
create or replace function danmeans_getpayments(text)
returns numeric as
$BODY$
select coalesce(sum(aropen_paid),0.00) FROM public.aropen where
aropen_applyto is not null and (aropen_applyto = $1) ;
$BODY$
LANGUAGE 'sql' ;
--
⚂⚃ 100% natural
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: jasen@xnet.co.nz
Subject: Re: something simple but I can't
In-Reply-To: <ii02it$dcm$1@reversiblemaps.ath.cx>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox