Anmelden

View Full Version : SQL Fehler -305 (SQLSTATE 22002



tarkusch
18-07-12, 08:29
Hallo *all,

Bei diesem Statement wird ein Fehler Code -305(Indicator variable required.) produziert.
Die Felder, bis aus SUMKOST, sind definiert in der Datei.

Wie handelt man so ein Problem?
Was hat es mit dem Indicator auf sich, bzw. wie muss der definiert sein?
Im Pgm den Fehlercode abfragen ist sicher keine schöne Lösung oder?


c*exec sql
c* SELECT Sum(F1BETR)
c* INTO :SUMKOST
c* FROM ZF1
c* WHERE F1KOST = :P1AUF
c*end-exec


Liebe Grüße

tarki

alfredo
18-07-12, 09:04
Hallo,

Ich vermute der Fehler ensteht dadurch, dass kein Satz gefunden wird.
Dadurch ist die Summe Null und dafür benötigt man einen Null-Indikator.

Eine Möglichkeit:
SELECT Sum(Ifnull(F1BETR, 0))

lg
alfred

B.Hauser
18-07-12, 09:16
Die Spalte F1BETR ist NULL fähig und kann deshalb NULL-Werte enthalten.
Da NULL-Werte außerhalb des gültigen Bereichs liegen, müssen diese entweder in einen Default-Wert konvertiert oder separat abgefragt (durch Indikator-Variable) werden.

Eine Indikator-Variable wird als beliebige 5I 0 Variable definiert und unmittelbar (nur durch ein Blank getrennt) nach der eigentlichen Host-Variablen angegeben. Wird ein NULL-Wert ausgegeben wird die Indikator-Variable auf -1 gesetzt anderenfalls wird 0 ausgegeben.


Exec SQL Select Sum(F1BETR) into :MyHostVar :MyIndVar
From .... ;
If MyIndVar < *Zeros; //NULL Wert
....

Birgitta

tarkusch
18-07-12, 09:33
Besten Dank an euch, hat super geklappt.