Re: Use of RETURN in pl/pgsql function - Mailing list pgsql-sql

From Jie Liang
Subject Re: Use of RETURN in pl/pgsql function
Date
Msg-id Pine.BSF.4.10.10102071307020.17745-100000@tidal.ipinc.com
Whole thread Raw
In response to Use of RETURN in pl/pgsql function  (Jeff Eckermann <jeckermann@verio.net>)
List pgsql-sql
You may try like:

if block
end if;
return somefakething;

no matter this return can be reached or not.
then compile will be no problem.

Jie LIANG

Internet Products Inc.

10350 Science Center Drive
Suite 100, San Diego, CA 92121
Office:(858)320-4873

jliang@ipinc.com
www.ipinc.com

On Wed, 7 Feb 2001, Jeff Eckermann wrote:

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



pgsql-sql by date:

Previous
From: Christopher Sawtell
Date:
Subject: Re: Re: SQL Join - MySQL/PostgreSQL difference?
Next
From: "Michael Miyabara-McCaskey"
Date:
Subject: FATAL 1: btree: items are out of order (leftmost 0, stack 48, update 2)