PDA

View Full Version : Dynamische Sortierung Embedded SQL



NEich
16-12-05, 14:22
Hi,

ich hab folgendes Problem:
Ich muss aus einer beliebigen DB2 Tabelle (steht zur Compile-Zeit noch nicht fest) einen Text-Output erzeugen, zur Vereinfachung sag ich mal dieser Text-Output ähnelt einer CSV Datei. Das ist heutzutage ziemlich einfach, da gibt es genug Sourcen und Tools wie sowas geht (Intern beschriebene Datei + die Feldattribute per API ermitteln)

Jetzt das Problem: Wie lese ich die Eingabedatei geschlüsselt, da ich auf anforderung jeweils nach einem anderen Feld sortieren muss.
Den Output im Nachhinein sortieren ist keine Möglichkeit, da ich z.B. aus 10000 Datensätzen in der Tabelle die jeweils ersten 500 haben möchte.

Die erste überlegung war dynamisches Embedded SQL zu verwenden da könnte ich mit ORDER BY jeweils die sortierkriterien unterbringen, nur da ich nicht weiss wie viele Felder ich habe, kann ich den Fetch auch nicht in Host-Variablen packen. d.H. ich kriege meinen Output nicht aus der Tabelle.

Die zweite Idee war, per OPNQRYF die jeweilige Datei gekeyed zu öffnen, dann das oben angesprochene zu verwenden. Dies funktioniert jedoch nicht mit einer intern definierten Datei in RPG (siehe http://www-912.ibm.com/s_dir/slkbase.NSF/0/2f427c9f0d7a7485862565c2007cf3d3?OpenDocument )

Hat vielleicht jemand eine Idee wie sich das einigermaßen Performant realisieren lässt? Oder muss ich doch auf zur Laufzeit erzeugte Logische Dateien, oder geschlüsselt kopierte Daten zurückgreifen (beide Methoden haben so ihren Preis bei der Performance)?

BenderD
16-12-05, 14:27
Hallo,

das sollte doch mit embedded SQL kein Problem sein, man generiere sich zur Laufzeit ein SQL Statement, das die Textzeile mit SQL Mitteln aus den Feldern zusammen bastelt und das kann man dann dynamisch ausführen, da brauche ich die einzelnen Felder im Programm nicht.

mfg

Dieter Bender


Hi,

ich hab folgendes Problem:
Ich muss aus einer beliebigen DB2 Tabelle (steht zur Compile-Zeit noch nicht fest) einen Text-Output erzeugen, zur Vereinfachung sag ich mal dieser Text-Output ähnelt einer CSV Datei. Das ist heutzutage ziemlich einfach, da gibt es genug Sourcen und Tools wie sowas geht (Intern beschriebene Datei + die Feldattribute per API ermitteln)

Jetzt das Problem: Wie lese ich die Eingabedatei geschlüsselt, da ich auf anforderung jeweils nach einem anderen Feld sortieren muss.
Den Output im Nachhinein sortieren ist keine Möglichkeit, da ich z.B. aus 10000 Datensätzen in der Tabelle die jeweils ersten 500 haben möchte.

Die erste überlegung war dynamisches Embedded SQL zu verwenden da könnte ich mit ORDER BY jeweils die sortierkriterien unterbringen, nur da ich nicht weiss wie viele Felder ich habe, kann ich den Fetch auch nicht in Host-Variablen packen. d.H. ich kriege meinen Output nicht aus der Tabelle.

Die zweite Idee war, per OPNQRYF die jeweilige Datei gekeyed zu öffnen, dann das oben angesprochene zu verwenden. Dies funktioniert jedoch nicht mit einer intern definierten Datei in RPG (siehe http://www-912.ibm.com/s_dir/slkbase.NSF/0/2f427c9f0d7a7485862565c2007cf3d3?OpenDocument )

Hat vielleicht jemand eine Idee wie sich das einigermaßen Performant realisieren lässt? Oder muss ich doch auf zur Laufzeit erzeugte Logische Dateien, oder geschlüsselt kopierte Daten zurückgreifen (beide Methoden haben so ihren Preis bei der Performance)?

NEich
16-12-05, 14:50
Vielen Dank, da zeigt sich mal wieder, dass man nicht immer so kompliziert denken sollte :)

Das Wochenende ist gerettet