Hallo,
ich arbeite in einem Programm mit der SQLDA - Struktur um dynamisch SQL´s auszuführen.
Das funktioniert auch sehr gut, außer wenn ich eine SUM - Funktion im SQL verwende:
z.B. SELECT SUM(WERT) FROM TABELLE
Dann bekomme ich immer im SQLCOD den Fehlercode -822 zurück, ich weiß aber nicht so recht warum.
Die Programmvariablen weiße ich folgendermaßen zu:
Beim FETCH (exec sql FETCH NEXT FROM C1 USING DESCRIPTOR :SQLDA) kommt es dann immer zum -822 Fehler.
Die SUM-Felder sind vom SQLTYP 485.
ein COUNT(*) funktioniert z.B., nur der SUM mag nicht
Irgendwer eine Idee?
Code:D alpha s 4096A inz dim(999) D timestamp s Z inz dim(999) D packedDec S 31p 9 inz dim(999) D zonedDec s 31s 9 inz dim(999) D integer s 8B 0 inz dim(999) for index = 1 to SQLD; SQLVAR = SQL_VAR(index); select; when SQLTYPE = 484 or SQLTYPE = 485; //Packed SQLDATA = %addr(packedDec(index)); #MSQLL(index) = SQLLEN; SQLLEN = (256*%len(packedDec(index))) + %decpos(packedDec(index)); when SQLTYPE = 488 or SQLTYPE = 489; //Zoned SQLDATA = %addr(zonedDec(index)); #MSQLL(index) = SQLLEN; SQLLEN = (256*%len(zonedDec(index))) + %decpos(zonedDec(index)); when SQLTYPE = 392 or SQLTYPE = 393; //Timestamp SQLDATA = %addr(timestamp(index)); #MSQLL(index) = SQLLEN; SQLLEN = %len(timestamp(index)); when SQLTYPE = 496; //Integer SQLDATA = %addr(integer(index)); #MSQLL(index) = SQLLEN; other; SQLDATA = %addr(alpha(index)); #MSQLL(index) = SQLLEN; SQLLEN = %len(alpha(index)); endsl; #FLDS($CF) = %trimr(SQLNAME); $CF = $CF+1; SQL_VAR(index) = SQLVAR; ENDFOR;
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)




Mit Zitat antworten
Bookmarks