Toolmaker Produkt-Dokumentation

Tipps und Tricks zu XSQL

Inhaltsübersicht


SQL-Abfragen aus IBM Query/400-Abfragen importieren (RTVQMQRY)

Jede Query/400-Abfage (Objekte vom Typ *QRYDFN) hat einen SQL-Befehl gespeichert, der ausgeführt wird, wenn die Abfrage gestartet wird (z.B. mit dem Befehl RUNQRY).

Mit dem Befehl RTVQMQRY ist es möglich, diesen SQL-Befehl aus der Abfrage zu exportieren und in einer Teildatei zu speichern.

Als Beispiel diene die Abfrage AETTMP/DSPOBJD_AL:

Einmalig erforderlich: Quelldatei zum Speichern der SQL-Befehle erstellen

Zunächst muss eine physische Quelldatei erstellt werden, in der die SQL-Befehle der einzelnen Queries gespeichert werden sollen:

CRTSRCPF FILE(AETTMP/QQRYSQL) TEXT('Aus *QRYDFN extrahierte SQL-Befehle')

Den Befehl RTVQMQRY verwenden (für jede Abfrage, die man übernehmen möchte)

Jetzt ist es möglich, mit dem Befehl RTVQMQRY die SQL-Befehle zu extrahieren:

RTVQMQRY QMQRY(AETTMP/DSPOBJD_AL)
     SRCFILE(AETTMP/QQRYSQL)
     ALWQRYDFN(*YES)

Jetzt steht der SQL-Befehl aus dem Query in der Quelle AETTMP/QQRYSQL(DSPOBJD_AL) und kann von dort mit einem geeigneten Programm (z.B. RDi) in das XSQL-Fenster kopiert werden.

Den Befehl aus der Quell-Teildatei über "SQL importieren" übernehmen

Im xsql-Fenster rechter Mausklick → SQL importieren ...


Namen der Quell-Teildatei angeben

Den Teildateinamen in [eckige Klammern] setzen!

Den Teil des Textes löschen, der nicht zum SQL-Befehl gehört.

Den Befehl aus der Quell-Teildatei in das xsql-Fenster über copy/paste übernehmen

Hier geht es darum, den Text aus der Quell-Teildatei in die Zwischenablage des PCs zu kopieren und im xsql-Fenster einzufügen.

Zum Anzeigen der Quell-Teildatei können verscchiedene Programme verwendet werden.

Kopieren mit IBM Rational Developer for i (RDi)

Kopieren mit SEU

Das Programm Source Entry Utility (SEU) ist der Quell-Editor für IBM i Green-Screen.

Aufruf der Quell-Datei in einer 5250-Sitzung mit dem Befehl

WRKMBRPDM FILE(AETTMP/QQRYSQL)

Anstelle von AETTMP/QQRYSQL ist der Bilbliotheks-/Dateiname vom obigen Schritt (CRTSRCPF) zu verwenden

Auswahl 5 für die Teildatei mit dem exportieren SQL-Befehl

Es erscheint der Inhalt der Quell-Teildatei

Mit der Maus den SELECT-Befehl markieren und Bearbeiten → Kopieren klicken

Einfügen in das xsql-Fenster

Fügen Sie den kopierten SQL-Code mit STRG-V (oder über das Kontextmenü) in das xsql-Fenster ein und Klicken Sie auf "Ausführen"

Besonderheiten des Query/400 - SQL

Text-Ergebnisfelder mit Konkatenierung

In Query/400 ist es möglich, Textfelder zusammenzusetzen:


Die dazu RTVQMQRY-Ausgabe sieht so aus:

Dieser Befehl muss an zwei Stellen korrigiert werden, damit xsql ihn verarbeiten kann:

  • !! muss in concat gewandelt werden
  • Alle Anführungszeichen (") müssen entfernt werden
RTVQMQRY-Ausgabekorrigierter Befehl

SELECT

ALL SUBSTR(ODCDAT, 5, 2) !!'-'"!!"SUBSTR(ODCDAT, 1, 2) !!'-'"!!"SUBSTR

(ODCDAT, 3, 2) AS ERSTDAT, ODCTIM, ODLBNM, ODOBNM, ODOBTP

FROM AETTMP/DSPOBJD T01

ORDER BY ERSTDAT DESC, ODCTIM DESC

SELECT

ALL SUBSTR(ODCDAT, 5, 2) concat '-' concat SUBSTR(ODCDAT, 1, 2) concat '-' concat SUBSTR

(ODCDAT, 3, 2) AS ERSTDAT, ODCTIM, ODLBNM, ODOBNM, ODOBTP

FROM AETTMP/DSPOBJD T01

ORDER BY ERSTDAT DESC, ODCTIM DESC

Mit diesen beiden Korrekturen kann der Befehl auch in xsql gestartet werden: