-
SQLDA - dynamisches SQL SUM Funktion
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;
-
Probiere mal die SUM mit einem CAST zu überziehen:
Code:
SELECT CAST(SUM(WERT) as DEC(31, 9)FROM TABELLE
lg Andreas
-
auch schon probiert, leider ohne erfolg
bin aber denke ich kurz vor der Lösung
Man muss denke ich noch bei diesem SQLTYP noch die SQLIND (Null-Indikator) Variable zuweisen.
Zitat von andreaspr@aon.at
Probiere mal die SUM mit einem CAST zu überziehen:
Code:
SELECT CAST(SUM(WERT) as DEC(31, 9)FROM TABELLE
lg Andreas
-
... bei ungeradem SQLTYPE brauchst Du zusätzlich einen Null-Indicator.
D*B
Similar Threads
-
By Tschabo in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 11-03-21, 09:14
-
By labm in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 07-05-15, 07:55
-
By NEWSolutions Redaktion in forum NEWSolutions artikel
Antworten: 0
Letzter Beitrag: 05-12-13, 18:03
-
By mott in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 18-09-02, 15:42
-
By Stefan_R in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 23-01-02, 16:08
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks