Function result using execute

From: Paul Lambert <paul(dot)lambert(at)reynolds(dot)com(dot)au>
To: pgsql-sql <pgsql-sql(at)postgresql(dot)org>
Subject: Function result using execute
Date: 2007-12-12 05:15:21
Message-ID: 475F6E69.3060207@reynolds.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

I have a function which uses execute to populate the value of a variable
based on a defined select construct.

The relevant part of the code looks like thus:
EXECUTE curr_query INTO curr_amount;
RAISE NOTICE '%',curr_amount;
IF NOT FOUND THEN
curr_amount=0;
END IF;
RAISE NOTICE '%',curr_amount;

I've added the if found to trap if nothing is returned by the execute so
that the value gets set to a default 0 rather than null.

When I call the function, the first raise notice gives me a value that
is correct based on the select it would be performing, but the second
raise notice gives me a 0, which suggests to me that although the
execute has populated the curr_amount field with something, the IF NOT
FOUND is always firing.

Am I misunderstanding what the FOUND variable can be used for - i.e. is
it not compatible with/not set by the EXECUTE command and should
therefore I just be using a test of IF curr_amount IS NOT NULL?

Cheers,
Paul.

--
Paul Lambert
Database Administrator
AutoLedgers - A Reynolds & Reynolds Company

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2007-12-12 06:01:51 Re: Function result using execute
Previous Message Tom Lane 2007-12-12 04:35:57 Re: join on three tables is slow