Alle Formen von IBM i SQL-Services können mit Db2 Web Query verarbeitet werden. Dies sind im einzelnen Tabellen (TABLE), Tabellen-Funktionen (TABLE FUNCTION), Ansichten (VIEW), Skalar-Funktionen (SCALAR FUNCTION) und Prozeduren (PROCEDURE).
Im aktuellen Artikel wird gezeigt, wie IBM i Services vom Typ TABLE mit Db2 Web Query verarbeitet werden können.
IBM i Services vom Typ TABLE
Mit dem IBM i Service QSYS2.Services_Info vom Objekttyp VIEW erhält man eine Liste aller verfügbaren IBM i Services. Die folgende SQL-Anweisung liefert alle Services vom Typ TABLE:
— Liste aller Services vom Objekttyp = TABLE
Select *
From Qsys2.Services_Info
Where Sql_Object_Type = ‚TABLE‘
Order By Service_Name; — QSYS2.SYSLIMTBL
— Wieviele Services Objekttyp = TABLE gibt es?
Select count(*)
From Qsys2.Services_Info
Where Sql_Object_Type = ‚TABLE‘; –1
Offensichtlich gibt es nur einen Service vom Typ TABLE: QSYS2.SYSLIMTBL. Dieser Service wird im weiter unten folgenden Beispiel von IBM verwendet. Das zweite von IBM gelieferte Beipiel verwendet einen Service QSYS2.SYSLIMITS (Objekttyp VIEW), der den Service QSYS2.SYSLMTBL und die Tabelle QSYS2.SQL_SIZING. Falls Sie hier tiefer einsteigen möchten und wissen wollen, was hinter dieser View steckt, können Sie sich den Quellcode für diese View erstellen bzw. erstellen lassen.
Weitere Infos zu den zuvor erwähnten IBM i Services finden Sie unter:
https://www.ibm.com/docs/en/i/7.3?topic=services-syslimtbl-table
https://www.ibm.com/docs/en/i/7.3?topic=services-syslimits-view
https://www.ibm.com/docs/en/i/7.3?topic=views-sql-sizing
SQL-Quellcode eines SQL-Objektes erzeugen
Um den Quellcode eines SQL-Objektes zu erstellen, gibt es zwei Möglichkeiten:
- IBM i ACS –> Datenbank –> Schemata –> Objektart des Service auswählen –> Service auswählen –> Kontextmenü –> SQL generieren
- Mit der externen Prozedur QSYS2.GENERATE_SQL()
QSYS2.GENERATE_SQL ist externe Prozedur (in C geschrieben) mit 37 Parametern. Mit ihr ist es möglich, die SQL-Anweisungen zu generieren, die erforderlich sind, um dieses Datenbank-Objekt zu erstellen. Das Ergebnis kann zurückgegeben werden als Teildatei einer physischen Quellendatei, als IFS-Streamfile oder einfach nur als Ergebnismenge.
Mit der folgenden Anweisung kann der SQL-Quellcode für die Erstellung der View QSYS2.LIMITS generiert werden:
— View QSYS2.SYSLIMITS generieren
CALL QSYS2.GENERATE_SQL(
DATABASE_OBJECT_NAME => ‚SYSLIMITS‘,
DATABASE_OBJECT_LIBRARY_NAME => ‚QSYS2‘,
DATABASE_OBJECT_TYPE => ‚VIEW‘ );
Weitere Informationen zu QSYS2.GENERATE_SQL() finden Sie auf der Webseite:
https://www.ibm.com/docs/en/i/7.3?topic=services-generate-sql-procedure
Wie wird ein Synonym für einen IBM i Service erstellt?
IBM i Services können auf verschiedene Arten verfügbar sein: als View, als UDTF (User Defined Table Function) oder als Stored Procedure.
- Ist der Service als VIEW verfügbar, verwenden Sie einfach diese und erstellen daraus ein Synonym.
- Steht der Service als UDTF zur Verfügung, verwenden Sie den SQL-Code und erstellen damit eine SQL-View. Anhand der View wird das Synonym erstellt.
- Ist der Service als STORED PROCEDURE vorhanden, prüfen Sie, ob diese eine Ergebnismenge zurückgibt. Falls ja, wird darüber das Synonym erstellt.
Die Erstellung des Synonyms ist ein einmaliger Vorgang, der mit dem Synonym-Editor oder mit EZ-Report durchgeführt werden kann, falls der Service als SQL-Anweisung vorliegt. Das Synonym stellt die Spalten der zugrunde liegenden Datei oder der SQL-View dar. Es enthält keine Daten.
Das Synonym kann danach überarbeitet werden:
- Hinzufügen von Rechenfeldern
- Ändern der Feldnamen und/oder Datentypen
- Das Synonym kann mit einem anderen Synonym verknüpft (“ge-joint“) werden
- und vieles mehr
Falls für den zu verwendenden Service bereits ein Synonym existiert, kann natürlich auch dieses verwendet werden. Kopieren Sie das Synonym in Ihren eigenen Hauptordner, bevor Sie es ändern.
In den folgenden Beispielen wird der oben bereits erwähnte Service vom Typ TABLE QSYS2.SYSLIMTBL einmal direkt verwendet und dann innerhalb einer VIEW.
Beispiel von IBM
Als Beispiel verwende ich aus dem Ordner IBM I Administration Samples die Reports im Unterordner Limits. Hier geht es um die Systemgrenzen, dargestellt und auswählbar nach Kategorien. Durch einen Drilldown wird ein Bericht mit detailierter Darstellung aufgerufen. Über einen weiteren Drilldown aus dem Detail-Bericht wird ein Diagramm mit der zeitlichen Entwicklung der ausgewählten Objektgröße aufgerufen.
Der erste Bericht System_Limits_Detail
Schauen wir uns zunächst den ersten Bericht System Limits Details an. Der Bericht kann zum einen mit dem dynamischen Parameter Sizing_Name direkt aufgerufen werden oder über den zweiten Bericht System Limit Overview als Link über den Auswahl-Parameter.
Die Spalte System_Object_Name wiederum ist mit einem Link zu einem Diagramm versehen, welches die Größenveränderung des Objekts im zeitlichen Verlauf darstellt.
Der erste Bericht verwendet als Synonym den IBM i-Service QSYS2,SYSlIMTBL. Dieses wird mit einem weiteren Synonym des Services QSYS2.SQL_SIZING verknüpft.
Anstelle einer Verknüpfung auf Synonymebene hätte dies auch durch Erstellen einer View erfolgen können:
Create Or Replace View Qgpl.Tbl_Siz As
(Select *
From Qsys2.Syslimtbl
Inner Join Qsys2.Sql_Sizing
On Sizing_Id = Limit_Id);
Der zweite Bericht System_Limits_Overview
Der zweite Bericht verwendet eine Auswahlliste über den dynamischen Parameter System_Limit_Categories.
Für den zweiten Bericht wurde das Synonym QSYS2_SYSLIMITS verwendet. Das Synonym wurde erstellt aus einer View, welche die Services QSYS2.SYSLIMTBL und QSYS2.SQL_SIZING verwendet. Wie Sie die SQL-Quelle für diese View erzeugen können, habe ich Ihnen bereits oben gezeigt.
Weitere Infos finden Sie unter:
https://www.ibm.com/docs/en/i/7.3?topic=services-syslimits-view
Über den Link der Spalte Sizing_Name wird der erste Bericht mit Übergabe des Parameters Sizing_Name aufgerufen.
Der dritte Bericht – das Diagramm System Limits Drill – Chart Specific Object
Hier wird wieder wie im ersten Bericht der Service QSYS2.SYSLIMTBL auf Synonymebene verknüpft mit QSYS2.SQL_SIZING verwendet.
Für die Ausführung des Diagramms sind vier Parameter erforderlich:
- SYSTEM_SCHEMA_NAME
- SYSTEM_OBJECT_NAME
- OBJECT_TYPE
- SIZING_NAME
Diese können beim direkten Aufruf manuell angegeben werden. Einfacher ist es, wenn Sie den Drilldown aus dem Bericht System Limits Details verwenden. Dabei werden diese Parameter nach Auswahl des Objekts automatisch übergeben.
Die folgende Abbildung zeigt einen Drilldown vom Übersichtsbericht über den Detailbericht bis zum Zeitdiagramm.
Vorschau:
Im nächsten Artikel ist das Thema IBM i Services und TABLE FUNCTIONs.
Bis dahin wünsche ich Ihnen weiterhin viel Spaß beim Vermehren Ihrer Fertigkeiten.
Der Autor Theo Bär schreibt regelmäßig für den TechKnowLetter.
- seit über 30 Jahren im IBM-Midrangebereich tätig, selbstständiger Berater und IBM Business Partner
- Dipl.Wirtschafts-Ingenieur, 5 Jahre als Systemingenieur bei IBM, Dozent und Trainer
- Autor ITP-Fachbücher „DB2 Web Query“ (Dezember 2008 und 2012)
- Co-Autor IBM Redbook „RPG Update“ (2005)
- Co-Autor IBM Redbook „DB2 Web Query 2.1“ (2012)
Sie erreichen ihn unter:
EDV-Beratung Theo Bär
Ringmauerweg 1
69250 Schönau
Tel.: (+49) 6228 912 630
E-Mail: [info@edv-baer.com]
Sechs Ausgaben des TechKnowLetters erhalten Sie hier für 88 Euro.