-
Dynamisches SQL bauen in RPG
Ich habe vor im SQLRPGLE -Embedded-SQL Dynamisch das SQL-zu bauen.
Probleme die ich dabei habe:
- es ist eine Große Menge an Daten. (Select *) und alle Felder in eine Dateibeschriebene Datenstruktur läuft nur langsam
-ich möchte nur bestimmte Felder auswählen und die entsprechend mit Fetch into dann verarbeiten (Fetch verlangt aber Varieblen oder DS) die ich aber nicht gleich kenne(von Benutzer auswählbar)
-beim Gruppierung möchte ich noch innerhab der Gruppen sortieren
Hat jemand eine Idee.
Danke
-
So dynamisch ist RPGLE leider nicht.
Du kannst per Describe Statement dir eine SQLDA übergeben lassen.
An Hand der SQL-Typen (laut SQLDA) setzt du dann Pointer in die SQLDA für die Felder deiner DS.
Beim Fetch nutzt du dann USING SQLDA MYSQLDA.
Alles leider etwas mühsam.
-
Danke für Antwort.
Wenn es einfach wäre hätte ich nicht gefragt.
Haben Sie vielleicht Beispiele. Habe damit noch nie gearbeitet.
Wenn ich gruppierung, summen usw. will, muss ich wahrscheinlich dieses so machen.
nochmals Danke
Gruß
-
... die Anzahl der Felder ist nicht das, was die Zeit verbraucht, das liegt eher an der Sortierung (falls da kein Index da ist), oder an Auswahlkriterien.
D*B
-
Wie kriege ich es erst dynamisch mit dem Feldauswahl und dem Gruppierung.
ist es so richtig:???
FETCH C1 USING DESCRIPTOR :SQLDA ;
D* SQL Descriptor area
D SQLDA DS
D SQLDAID 1 8A
D SQLDABC 9 12B 0
D SQLN 13 14B 0
D SQLD 15 16B 0
D SQL_VAR 80A DIM(SQL_NUM)
D 17 18B 0
D 19 20B 0
D 21 32A
D 33 48*
D 49 64*
D 65 66B 0
D 67 96A
D*
DSQLVAR DS
D SQLTYPE 1 2B 0
D SQLLEN 3 4B 0
D SQLRES 5 16A
D SQLDATA 17 32*
D SQLIND 33 48*
D SQLNAMELEN 49 50B 0
D SQLNAME 51 80A
D* End of SQLDA
D*
beim Wandeln fehler: SQL_NUM und SQL_Var nicht definiert sind???
Danke
-
Beim zusammenbauen des SELECT kann man auch Felder die wefallen durhc konstanten ersetzen!
SELECT NAME, KUNDENNR, SUM(UMSATZ), SUM(MENGE) FROM FILE ORDER BY NAME GROUP BY NAME, KUNDENNR
Kann man auch alternativ
SELECT NAME, ' ', SUM(UMSATZ), 0 FROm FILE ORDER BY NAME GROUP BY NAME
Somit kann die Ziel-DS gleichbleiben, man muss nur wissen wo was drin steht....
Nicht schön aber flexibel...
-
... bringt aber NullKommaNix, da der Satz ohnehin komplett gelesen wird, die Konstanten von der Datenbank ins Programm geliefert und dann gemapped werden. Das isr aber so oder so nur Arbeitsbeschaffung für den Programmierer...
D*B
-
SQL_NUM muss als Integer-Feld definiert und mit der maximal zu erwartenden Anzahl an Spalten inititalisiert werden.
Für jedes zurückgegebene Feld bzw. jede ausgewählte Spalte wird ein Element in der SQLVAR Feldgruppe/Datenstruktur gefüllt. In SQLTYPE wird der numerische Datentyp der Spalte (Beschreibung in SQL Reference in Appendix D), in SQLLEN die Datenlänge und in SQLDATA wird ein Pointer auf die Spalten-Daten ausgegeben. Diese Informationen musst Du dann verarbeiten.
Birgitta
-
Wobei der Pointer selber, z.B. mittels %adr() oder %alloc(), gesetzt werden muss.
Per Describe Statement übergibt man eine SQLDA-Struktur mit genügend Anzahl Elementen, anschließend kann man dann die Pointer setzen.
Similar Threads
-
By Tschabo in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 11-03-21, 09:14
-
By oulbrich in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 23-03-15, 17:21
-
By NEWSolutions Redaktion in forum NEWSolutions artikel
Antworten: 0
Letzter Beitrag: 05-12-13, 18:03
-
By Robi in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 29-05-03, 08:00
-
By mott in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 18-09-02, 15:42
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