Albert Mayr
16-01-13, 10:14
Ich verwende folgende Funktion zur Ermittlung von Warengruppen:
CREATE FUNCTION SWGWA.GetWagrString (
PARFir Char(3), PARKdnr Char(8) )
RETURNS VARCHAR(1024)
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DATA
CALLED ON NULL INPUT
BEGIN
DECLARE RETURNVAL VARCHAR ( 1024 ) NOT NULL DEFAULT ' ' ;
FOR CSRC1 AS C1 CURSOR
FOR SELECT wagr
FROM SWKWS
WHERE FIR = PARFir
and KDNR = ParKdnr
DO SET ReturnVal = ReturnVal CONCAT '\' CONCAT trim(CsrC1.wagr);
END FOR ;
RETURN LTRIM(ReturnVal) ;
END;
Der Testaufruf bringt aber einen leeren Rückgabewert:
-- Test
select distinct
fir, kdnr, swgwa.GetWagrString(fir, kdnr) as Warengruppen
from swgwa.swkds
where fir='001' and kdnr='010446';;
-- Ergebnis:
Firma Kunde WARENGRUPPEN
001 010446
******** Datenende ********
Wenn ich die Werte direkt mit Select auswähle, bekomme ich aber ein richtiges Ergebnis:
SELECT wagr FROM SWKWS WHERE FIR='001' and KDNR = '010446';;
Wgr
S
SA
W
******** Datenende ********
Woran kann das liegen?
Vielen Dank für eure Hilfe
CREATE FUNCTION SWGWA.GetWagrString (
PARFir Char(3), PARKdnr Char(8) )
RETURNS VARCHAR(1024)
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DATA
CALLED ON NULL INPUT
BEGIN
DECLARE RETURNVAL VARCHAR ( 1024 ) NOT NULL DEFAULT ' ' ;
FOR CSRC1 AS C1 CURSOR
FOR SELECT wagr
FROM SWKWS
WHERE FIR = PARFir
and KDNR = ParKdnr
DO SET ReturnVal = ReturnVal CONCAT '\' CONCAT trim(CsrC1.wagr);
END FOR ;
RETURN LTRIM(ReturnVal) ;
END;
Der Testaufruf bringt aber einen leeren Rückgabewert:
-- Test
select distinct
fir, kdnr, swgwa.GetWagrString(fir, kdnr) as Warengruppen
from swgwa.swkds
where fir='001' and kdnr='010446';;
-- Ergebnis:
Firma Kunde WARENGRUPPEN
001 010446
******** Datenende ********
Wenn ich die Werte direkt mit Select auswähle, bekomme ich aber ein richtiges Ergebnis:
SELECT wagr FROM SWKWS WHERE FIR='001' and KDNR = '010446';;
Wgr
S
SA
W
******** Datenende ********
Woran kann das liegen?
Vielen Dank für eure Hilfe