Use of RETURN in pl/pgsql function

From: Jeff Eckermann <jeckermann(at)verio(dot)net>
To: "'pgsql-sql(at)postgresql(dot)org'" <pgsql-sql(at)postgresql(dot)org>
Subject: Use of RETURN in pl/pgsql function
Date: 2001-02-07 18:20:36
Message-ID: 08CD1781F85AD4118E0800A0C9B8580B0948FD@NEZU
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

My script is below.

I thought (based on recent posts) that this use of RETURN is allowed, but
when trying an insert to report_table, I get the following error:

ERROR: control reaches end of trigger procedure without RETURN

I have solved several problems in getting to this point, but have now run
out of ideas. I would appreciate any pointers.

jeffe(at)kiyoko=> uname -a
FreeBSD kiyoko.la.verio.net 4.0-STABLE FreeBSD 4.0-STABLE #0: Thu Apr 27
10:44:07 CDT 2000
jeffe(at)kiyoko=> psql -V
psql (PostgreSQL) 7.0.0

Script:

drop function mrr();

create function mrr() returns opaque as '

begin

if NEW.billing_frequency = ''Monthly'' -- That's doubled single
quotes (and below as well)

then

return NEW;

else

if NEW.billing_frequency = ''Yearly''

then

NEW.rate := NEW.rate/12;

NEW.rate_override := NEW.rate_override/12;

return NEW;

else

if NEW.billing_frequency = ''Semi-Annual''

then

NEW.rate := NEW.rate/6;

NEW.rate_override := NEW.rate_override/6;

return NEW;

else

if NEW.billing_frequency = ''Quarterly''

then

NEW.rate := NEW.rate/3;

NEW.rate_override := NEW.rate_override/3;

return NEW;

end if;

end if;

end if;

end if;

end;

'language 'plpgsql';

drop trigger mrr_set_trigger on report_table;

create trigger mrr_set_trigger

before insert on report_table

for each row execute procedure mrr();

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2001-02-07 18:47:52 Re: Use of RETURN in pl/pgsql function
Previous Message Brice Ruth 2001-02-07 17:23:37 Re: Re: [SQL] Re: SQL Join - MySQL/PostgreSQL difference?