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@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@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();

Reply via email to