Ich bin sicher nicht der Firebird-Spezi, aber was passiert eigentlich hier
Code:
(cast( al.LgNr as Integer) >0 )
wenn LgNr nicht als Integer ge-castet werden kann?
Kann es sein, dass dann für alle funktionierenden Datensätze ein Protokoll geschrieben wird, aber im Fehlerfall die SP im ungültigen Zustand abbricht und dann einen Null-Wert liefert?
Das Protokoll hätte dann zwar Daten, aber ob die vollständig sind, ist nicht geklärt, oder?
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.