PDA

View Full Version : SQL Datenstrucktur



steven_r
28-08-08, 14:58
Hallo @ all

ich erstelle per SQL mit Create Table zur laufzeit einen Tempfile.

Kann ich diesen nun Dynamisch auslesen?
Ich fetche diesen File schon in eine Datenstruckturarray.
Um an die Inhalte zu kommen benötige ich aber den Feldnamen, gibt es hier eine andere möglichkeit zb. über eine Schleife von 1 bis anzahl der Felder und diese irgendwie über einen Index auszulesen.

Währe sehr dankbar für eine lösung.
Danke im voraus.

Steven_r

UFK
28-08-08, 16:53
Sicher, mit zwei Schleifen und einem dynamischen Select in der 2. ist das zu machen.

In erster Hinsicht würde ich mal die Tabelle QSYS2/SYSCOLUMNS durchlesen, und dann jedes dort genannte Feld mit dem 2. Select dynamisch anspechen. Den String des 2. Selects generierst Du also erst, wenn Du ein Feld eingelesen hast.

Nachteil: das Verfahren selektiert jedes Feld einzeln, es ergibt also eine recht große Anzahl von Zugriffen, und die SQL-Engine kann das nicht optimieren.

Wenn Du das verbessern willst, müßtest Du z.B. erstmal den String für das komplette Select zusammenbauen, und ihn dann zum Schluß in einem 3. Schritt ausführen.

Ich habe neulich erst Kriterien und Bedingungen für gewisse Aktionen variabel hinterlegt und implementiert, im Prinzip genau so, im Rahmen von 2 ineinander verschachtelten Schleifen mit 2 verschiedenen Cursorn und das Ganze in mehreren SQL STORED PROCEDURES bereitgestellt ...

"Datenstruckturarray..." ?
Hm, für RPG habe ich da z.Zt. keinen Plan. Dafür ist mein Konzept weniger geeignet.
Du könntest die Felder damit natürlich umbenennen, aber das geht auch viel einfacher. Beschreib doch mal genauer, was Du brauchst.

Fuerchau
28-08-08, 17:42
Das ist ein wenig komplizierter, aber SQL gibt da Hilfsmittel:

mittels "Describe Table ..." bekomme ich ein Resultset über alle Felder.
Diese kann ich dann dynamisch zum Select aufbauen.

Mittels einer SQLDA (siehe Handbuch) kann ich dann beim "Fetch My cursur using : MySqlDa" auch Daten dynamisch verarbeiten (allerdings nicht in eine Struktur mit Mehrfachvorkommen.

In der SQLDA muss ich je Feld eine Unterstruktur mit Feldtyp und Pointer angeben.