Thread: Function parameter
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
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
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.
----- 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