IF (LE_EK <= 0 ) THEN
Wen LE_EK IS NULL, dann wird der Ausdruck false. Der ART_EKNETTO wird hernach nirgends mehr verwendet und auch nicht protokolliert. Ohne : gibt es keine Binding der Variable.
Selbst wenn liefert die Protokollzeile NULL durch '||'. (
SQL)
Ich arbeite deswegen lieber mit Records und die innere Logik in eine eigene Funktion gepackt. Damit kann man einen Art Unittest machen.
Folgendes ist mir auch noch aufgefallen:
INTO :ARTNR, :LGNR, BEREINH, ART_EKNETTO
Dort fehlen Doppelpunkte. Wurde zwar irgendwo schon geschrieben, aber ich habe keine Antwort darauf gesehen.
Die Folge könnte sein, das ART_EKNETTO Null ist.
In dem Fall wäre hierdurch
SQL-Code:
LE_EK = (SELECT LE_EK FROM P_GET_LEEK_STICHTAG(:ARTNR, :LGNR, :DATUM));
IF (LE_EK <= 0 ) THEN
LE_EK = ART_EKNETTO;
LE_EK auch Null, sobald LE_EK <= 0 ist.
Das muss aber wohl jemand mit genaueren Firebird-Kenntnissen klären.