Hallo *all,
ich habe mir eine UDF geschrieben die mir kundenspezifische Preise ermitteln soll.
Dummerweise läuft das Teil auf Fehler.
Fehlermeldung
Die UDF sieht so aus:Code:Nachrichten-ID . . . . : SQL0305 Bewertung . . . . . . : 30 Nachrichtenart . . . . : Diagnose Sendedatum . . . . . . : 15.08.14 Sendezeit . . . . . . : 15:45:56 Nachricht . . . : Anzeigervariable erforderlich. Ursache . . . . : Eine Anweisung FETCH, eine eingebettete Anweisung SELECT, eine Anweisung CALL, GET DESCRIPTOR, SET oder VALUES INTO hatte einen Nullwert zur Folge, für Host-Variable SQLP_L2.RETURNVAL wurde jedoch keine Anzeigervariable angegeben. Die relative Position der Host-Variablen in der Klausel INTO oder der Parameterliste ist 2. Ist der Name der Host-Variablen
Jetzt vermute ich ja mal das ein SQL Statement kein Ergebniss liefert und daher z.B. Preis2 nicht gefüllt ist.Code:CREATE FUNCTION rptrade/artpreis3 ( ARTIKELNR dec(10), Kundennr dec(10) ) RETURNS CHAR(10) LANGUAGE SQL READS SQL DATA BEGIN DECLARE RETURNVAL CHAR ( 10 ) NOT NULL DEFAULT '0,00' ; DECLARE preis1 dec ( 10 ) ; DECLARE preis2 dec ( 10 ) ; FOR CSRC1 AS C1 CURSOR FOR SELECT SOEIPR FROM rptrade/artpreis1 where SOID2 = ARTIKELNR and (sodnbi = 99999999 or sodnbi >= YEAR(CURRENT DATE)*10000 + MONTH(CURRENT DATE)*100 + DAY(CURRENT DATE)) order by soid2, sodnbi desc fetch first row only DO SET preis1 = SOEIPR; END FOR ; FOR CSRC1 AS C1 CURSOR FOR SELECT SOEIPR FROM rptrade/artpreis2 where SOID4 = ARTIKELNR and soid1 = kundennr and (sodnbi = 99999999 or sodnbi >= YEAR(CURRENT DATE)*10000 + MONTH(CURRENT DATE)*100 + DAY(CURRENT DATE)) order by soid4, sodnbi desc fetch first row only DO SET preis1 = SOEIPR; END FOR ; if preis2 > 0 then set preis1 = preis2 ; end if ; SET RETURNVAL = cast(preis1 as char(10)); RETURN LTRIM(RETURNVAL) ; END
Was will er mir mit dem Stichwort Anzeigevariable sagen?
Für Hilfe dankbar
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks