Re: create function : change name of input parameter - Mailing list pgsql-general

From Adrian Klaver
Subject Re: create function : change name of input parameter
Date
Msg-id 53F4A533.9030108@aklaver.com
Whole thread Raw
In response to create function : change name of input parameter  (Lori Corbani <Lori.Corbani@jax.org>)
Responses Re: create function : change name of input parameter  (Lori Corbani <Lori.Corbani@jax.org>)
Re: create function : change name of input parameter  (Lori Corbani <Lori.Corbani@jax.org>)
List pgsql-general
On 08/20/2014 06:25 AM, Lori Corbani wrote:
> Using Postgres Version 9.0.4:
>
> We are migrating our Sybase stored procedures to Postgres and need to be
> able to drop/replace the SPs, making needed changes to input parameters
> to fix issues/differences between Sybase and Postgres.
>
> However, we keep getting this error when we drop/replace the PG/SP:

Are you actually doing DROP and then CREATE OR REPLACE FUNCTION or just
doing CREATE OR REPLACE FUNCTION ?

The first case will work, the second will not:

test=> CREATE FUNCTION sales_tax(subtotal real, OUT tax real) AS $$
test$> BEGIN
test$>     tax := subtotal * 0.06;
test$> END;
test$> $$ LANGUAGE plpgsql;
CREATE FUNCTION

test=> CREATE OR REPLACE FUNCTION public.sales_tax(stotal real, OUT tax
real)
  RETURNS real
  LANGUAGE plpgsql
AS $function$
BEGIN


     tax := subtotal * 0.06;


END;


$function$



ERROR:  cannot change name of input parameter "subtotal"
HINT:  Use DROP FUNCTION sales_tax(real) first.

test=> drop function sales_tax(real) ;
DROP FUNCTION

test=> CREATE OR REPLACE FUNCTION public.sales_tax(stotal real, OUT tax
real)
  RETURNS real
  LANGUAGE plpgsql
AS $function$
BEGIN
     tax := subtotal * 0.06;
END;
$function$
;
CREATE FUNCTION



>
> ‘ERROR : cannot change name of input parameter’
>
> The  ‘create function’ documentation states:
>
> ‘You cannot change the name already assigned to any input parameter
> (although you can add names to parameters that had none before).’
>
> Other than a complete restore of the database from a dump that does
> **not** contain the original SP…is there any other way to override this
> constraint?
>
> This makes debugging **extremely** difficult.   If you don’t have your
> input parameters completely correct the first time…you’re hosed.
>
> Many thanks.
>
> Lori
>
> The information in this email, including attachments, may be
> confidential and is intended solely for the addressee(s). If you believe
> you received this email by mistake, please notify the sender by return
> email as soon as possible.
>


--
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From: Lori Corbani
Date:
Subject: create function : change name of input parameter
Next
From: Alban Hertroys
Date:
Subject: Re: create function : change name of input parameter