Hallo Dax,
nach einigem Probieren bin ich bei folgender Syntax angekommen
Code:
ALTER PROCEDURE "GET_VALUE"
(
"A_JAHR" INTEGER,
"A_ENTITY" VARCHAR(15) CHARACTER SET ISO8859_1,
"A_POSNR" VARCHAR(15) CHARACTER SET ISO8859_1
)
RETURNS
(
"A_VALUE" DOUBLE PRECISION
)
AS
DECLARE VARIABLE L_VER INTEGER;
DECLARE VARIABLE L_DEZ VARCHAR(3);
begin
L_DEZ = 'DEZ';
SELECT id FROM versionen WHERE aktive=1 INTO :L_VER;
EXECUTE STATEMENT 'SELECT SUM('||:L_DEZ||') AS DEZ FROM positiondata pd
WHERE (pd.jahr='||:A_JAHR||' AND pd.entity='||:A_ENTITY ||' AND
pd.posnr='||:A_POSNR||' and pd.ver='||:L_VER||') '
INTO :A_VALUE;
SUSPEND;
end
Das wird compiliert. Zur Laufzeit wird jedoch ein Fehler ausgegeben.
Parameter:
A_JAHR = 2007
A_ENTITY = 100132
A_POSNR = GV5031001110
Code:
Dynamic
SQL Error
SQL error code = -206
Column unknown
GV5031001110
At line 3, column 40
Es sieht so aus, als ob der Parameter A_POSNR als Spalte interpretiert wird
Wenn ich dem Beispiel deines Links folge und die | nicht verwende erhalte ebenfalls einen Fehler:
Code:
ISC ERROR CODE:335544569
ISC ERROR MESSAGE:
Dynamic
SQL Error
SQL error code = -206
Column unknown
A_JAHR
At line 2, column 27
Dann habe ich versucht die Parameter über values mitzugeben.
Code:
EXECUTE STATEMENT 'SELECT SUM(:L_DEZ) AS DEZ FROM positiondata pd
WHERE (pd.jahr=:A_JAHR AND pd.entity= :A_ENTITY AND
pd.posnr=:A_POSNR and pd.ver=:L_VER) '
INTO :A_VALUE VALUES :L_DEZ,:A_JAHR,:A_ENTITY,:A_POSNR,:L_VER;
Das erzeugt schon beim compilieren einen Fehler
Code:
ISC ERROR CODE:335544569
ISC ERROR MESSAGE:
Dynamic
SQL Error
SQL error code = -104
Token unknown - line 15, column 25
VALUES