Thread: Problems with function while migrating from Windows to Linux

Problems with function while migrating from Windows to Linux

From
"Jan Peters"
Date:
Hello list,
after developping my application in a Windows environment I am now migrating to the production Linux webserver. I
backedup my database, functions and schemas and imported them again via pgAdmin III, because the first application
whichI used to do the transfer did not move the variable aliases within the function. So what I have (what is running
underWindows) is:
 

function: 

getgv_neu(id int4, tablename text, runde1 int4, runde2 int4) returns int4:

--------------------8<----------------------------

DECLARE
tablename1 varchar := quote_ident(tablename);
result_aktiva integer;
result_passiva integer;
sum integer;
BEGIN
EXECUTE 'SELECT getaktiva(' || id|| ',' || runde1 || ',' || runde2 || ') ;' INTO result_aktiva;
if result_aktiva < -100000 THEN
RETURN result_aktiva;
END IF;
EXECUTE 'SELECT getpassiva(\'' || tablename1 || '\',' || id || ');' INTO result_passiva;
sum = result_aktiva - result_passiva;
RETURN sum;
END;


--------------------8<----------------------------

when I do e.g. a "select getgv_neu(5,'company_5',1,0)" I get the error message:

ERROR:  syntax error at or near "$4" at character 81
QUERY:  SELECT  'SELECT getaktiva(' ||  $1 || ',' ||  $2  || ',' ||  $3  || ') ;' INTO  $4
CONTEXT:  PL/pgSQL function "getgv_neu" line 7 at execute statement

What might be the problem here? Any ideas? I am stuck...

Thanks again in advance

Jan Peters-Anders



-- 
GMX startet ShortView.de. Hier findest Du Leute mit Deinen Interessen!
Jetzt dabei sein: http://www.shortview.de/?mc=sv_ext_mf@gmx


Re: Problems with function while migrating from Windows to Linux

From
Craig Ringer
Date:
Jan Peters wrote:
> Hello list,
> after developping my application in a Windows environment I am now migrating to the production Linux webserver.
>   
[snip]
> when I do e.g. a "select getgv_neu(5,'company_5',1,0)" I get the error message:
>
> ERROR:  syntax error at or near "$4" at character 81
> QUERY:  SELECT  'SELECT getaktiva(' ||  $1 || ',' ||  $2  || ',' ||  $3  || ') ;' INTO  $4
> CONTEXT:  PL/pgSQL function "getgv_neu" line 7 at execute statement
>
> What might be the problem here? Any ideas? I am stuck...
>   
At a guesss, you were using PostgreSQL 8.3 under Windows and the 
production Linux system has PostgreSQL 8.2 or earlier, which does not 
support EXECUTE ... INTO .

--
Craig Ringer