Обсуждение: Function parameter

Поиск
Список
Период
Сортировка

Function parameter

От
"Nico Callewaert"
Дата:
Hi !
 
I'm trying to modify an input parameter of a function, but I receive following error :
 
ERROR:  "$17" is declared CONSTANT
CONTEXT:  compile of PL/pgSQL function "update_jobreg" near line 26
 
Is there a way to modify an input parameter or I have to declare a local variable and assign that input parameter to it ?
 
Many thanks in advance, Nico Callewaert

Re: Function parameter

От
John DeSoi
Дата:
On Feb 24, 2009, at 5:10 PM, Nico Callewaert wrote:

> I'm trying to modify an input parameter of a function, but I receive
> following error :
>
> ERROR:  "$17" is declared CONSTANT
> CONTEXT:  compile of PL/pgSQL function "update_jobreg" near line 26
>
> Is there a way to modify an input parameter or I have to declare a
> local variable and assign that input parameter to it ?

Declaring a local variable is the best way to do it. You can modify a
parameter if you declare it as INOUT, but you generally only want to
do that if you want to return something from the function.

Note that you can declare and assign the value in a single line in the
DECLARE section of the function, e.g.

text_var text := text_param;



John DeSoi, Ph.D.



Re: Function parameter

От
"Nico Callewaert"
Дата:
----- Original Message -----
From: "John DeSoi" <desoi@pgedit.com>
To: "Nico Callewaert" <callewaert.nico@telenet.be>
Cc: <pgsql-general@postgresql.org>
Sent: Wednesday, February 25, 2009 1:52 AM
Subject: Re: [GENERAL] Function parameter


>
> On Feb 24, 2009, at 5:10 PM, Nico Callewaert wrote:
>
>> I'm trying to modify an input parameter of a function, but I receive
>> following error :
>>
>> ERROR:  "$17" is declared CONSTANT
>> CONTEXT:  compile of PL/pgSQL function "update_jobreg" near line 26
>>
>> Is there a way to modify an input parameter or I have to declare a  local
>> variable and assign that input parameter to it ?
>
> Declaring a local variable is the best way to do it. You can modify a
> parameter if you declare it as INOUT, but you generally only want to  do
> that if you want to return something from the function.
>
> Note that you can declare and assign the value in a single line in the
> DECLARE section of the function, e.g.
>
> text_var text := text_param;
>


Hi !

Thank you for the explanation.  I was not warae of the fact that you could
declare and assign a variable in 1 line.

Thanks, best regards, Nico