QMF – Prozeduren (QMF for Workstation V9.1)

Mit dem  Tool QMF for Workstation V9 ist es sehr einfach Prozeduren zu erstellen. Prozeduren dienen dazu, eine Reihe von SQL-Queries hintereinander abzuarbeiten, ohne dies mit jeder Query einzeln zu tun. Das im Allgemeinen kann schon eine Arbeitserleichterung sein, das eigentlich trickreiche dabei ist, dass unter Verwendung von Substitutionsvariablen und globalen Variablen bereits bestehende Queries unverändert in eine Prozedur gepackt werden können und sozusagen alle auf Knopfdruck abgearbeitet werden können. Diese Beschreibung beruht auf der Version V9.1 Fix Pack 17.

Überblick

Wie geht man am Besten vor?
1. Erstellen einer Prozedur und setzen von globalen Variablen
2. Erstellen der einzelnen SQL Queries unter Verwendung von Substitutionsvariablen
3. Einbinden/Aufruf der SQL-Queries in die aufrufende Prozedur

Detail

1. Erstellen einer Prozedur

Das Erstellen einer neuen Prozedur erfolgt über den Menüpunkt „File -> New -> Other“. Im darauf folgenden Wizard ist zuerst der Eintrag „Procedure“ auszuwählen und anschließend auf den Button „Next“ zu klicken.

prozedur_001

Anschließend muss der Prozedur ein Name gegeben werden, sowie eine Datenquelle ausgewählt werden. Durch die Bestätigung des Buttons „Finish“ wird eine leere Prozedur erstellt:

prozedur_002

In der leeren Prozedur können nun über den SET-Befehl globale Variablen gesetzt werden. Kommentare werden, genauso wie in SQL-Queries, mit zwei Minuszeichen eingeleitet. Im unten angefügten Beispiel wird zuerst die Systemvariable (Systemvariablen sind fest vorgegebene Variablennamen die mit DSQ beginnen) DSQQW_PROC_WNDWS auf den Wert 1 gesetzt. Das führt dazu, dass alle Ergebnisse der aufgerufenen Queries offen (angezeigt) bleiben. Im zweiten SET-Befehl wird die Substitutionsvariable FBDATUM global verfügbar gemacht. Das heißt, beim Aufruf der Prozedur erscheint einmalig ein Eingabedialog der zur Eingabe des Fachbestandsdatums führt und gleichzeitig wird die Variable zu einer globalen Variable gemacht. Globale Variablen sind während der gesamten Laufzeit der Prozedur verfügbar. In sämtlichen Queries kann auf diese einmalig gefüllte globale Variable zugegriffen werden.


-- DSQQW_PROC_WNDWS=1 (alle Fenster bleiben offen)
-- DSQQW_PROC_WNDWS=0 (nur das letzte Fenster bleibt offen)
SET GLOBAL (DSQQW_PROC_WNDWS=1
-- Durch das u.a. SET Statement wird die Substitutionsvariable
-- zur globalen Variable.
SET GLOBAL (FBDATUM=&FBDATUM)

 

2. Erstellen von Queries unter Verwendung von Substitutionsvariablen

In den in der Prozedur aufgerufenen Queries kann mit der in der Prozedur gesetzten globalen Variable (&FBDATUM) gearbeitet werden. Zum Beispiel so:

SELECT
&FBDATUM AS Stichtag
,'TIKOND' AS Tabelle
,FS_KOKO#DVSYS#ZUL AS DVSYS
,FS_KOKO#UTEIL AS Uteil
,COUNT(*) AS Anzahl
FROM
DBPOST06.VWPO0453TIKOND
WHERE
TIKOND_GLT_V_DAT <= &FBDATUM AND TIKOND_GLT_B_DAT >= &FBDATUM
AND FS_KOKO#DVSYS#ZUL = 400
GROUP BY
FS_KOKO#DVSYS#ZUL
,FS_KOKO#UTEIL

3. Aufruf der Queries in der Prozedur

In der Prozedur muss nun nur noch der Aufruf der SQL-Query erfolgen. Dies können selbstverständlich beliebig viele Queries sein.

run query y0e6844.COUNT_TIKOND

4. Speicherort der Queries und Prozeduren

Damit die Queries wie im oben angeführten Beispiel aufgerufen werden können, müssen diese im QMF-Katalog abgespeichert werden. Sinnvollerweise sollen diese Queries für alle Teammitglieder freigegeben (shared) werden.
Speichern: Menüpunkt File->Save At->QMF Catalog…

prozedur_003

Alternativ können Prozeduren und Queries auch auf dem lokalen oder einem Netz-Laufwerk abgespeichert werden.

Besonderer Hinweis

Der Gültigkeitsbereich einer selbst definierten globalen Variablen ist auf die QMF-Session beschränkt. Beendet man die QMF-Session, sind auch alle selbst definierten Variablen wieder gelöscht. Man kann/muss jedoch mit RESET GLOBAL selbst die Variablen bzw. deren Inhalte löschen.

Wenn man sehen will, welche globalen Variablen mit welchem Wert gesetzt sind, so kann man unter „View -> Preferences -> Global Variables“ dies überprüfen:

prozedur_004

Beispiel: Eine lauffähige Prozedur – Quellcode

 

SET GLOBAL (DSQQW_PROC_WNDWS=1)
SET GLOBAL (FBDATUM=&FBDATUM)

run query y0e6844.COUNT_KOKO
run query y0e6844.COUNT_TBETR
run query y0e6844.COUNT_ZSUR
run query y0e6844.COUNT_ZIKOND
run query y0e6844.COUNT_TIKOND

RESET GLOBAL ALL