Hallo *all,
ich habe hier eine SQL UDF die nicht das macht was ich erwarte.
Also wollte ich mal den Bagger anwerfen um das zu prüfen. Habe ich allerdings noch nie gemacht, deswegen klappt es auch noch nicht.
Schritt eins:
Code:
CREATE FUNCTION rptrade/zaehler /*01.11.19 12:05*/
( DEBITOR dec(08) ) RETURNS dec(05)
Language SQL
Modifies SQL Data
Deterministic
Specific zaehler
Called on NULL Input
Set Option
DATFMT = *ISO,
DBGVIEW = *SOURCE,
DECMPT = *COMMA,
TIMFMT = *ISO
BEGIN
DECLARE RETURNVAL dec (05) DEFAULT 0;
DECLARE anzahl decimal(05) DEFAULT 0;
DECLARE i_zaehler decimal(08) DEFAULT 0;
select debgh(dec(debitor)) into i_zaehler
from dat018
fetch first row only;
if i_zaehler = 0 then
select d020werta into i_zaehler
from dat020 where d020key = debitor;
end if;
if i_zaehler = 0 then
select d020werta into i_zaehler
from dat020 order by d020werta desc
fetch first row only;
set i_zaehler = i_zaehler + 1;
insert into dat020 (d020key, d020werta)
values(debitor, i_zaehler);
end if;
set returnval = i_zaehler;
RETURN RETURNVAL;
END
Schritt zwei:
Das Problem ist ja hier schon das ich keinen Parameter mitgeben kann.
Aber vielleicht kann mir ja auch so einer einen Tipp geben.
Code:
select debgh(dec(debitor)) into i_zaehler
from dat018
fetch first row only;
if i_zaehler = 0 then
Die Funktin liefert unter bestimmten Umständen eine 1 zurück das heißt der Rest dürfte dann nicht ausgeführt werden und die ganze Funktion gibt mir eine 1 zurück. Tut sie aber nicht. Ich vermute das diese Zeile oben nicht passt.
Für Hinweise dankbar. Benutzen tue ich den Iseries Navigator V6R1M0
GG 4229
Bookmarks