Die SkalarFunktion GENERATE_SPREADSHEET ist ab Release 7.4 für die IBM i verfügbar. Kann diese Funktion auch mit 7.3 verwendet werden? Wir zeigen, wie es gehen kann.
Die Skalarfunktion GENERATE_SPREADSHEET generiert eine Datei im IFS. Ausgangspunkt dazu ist eine Tabelle, die entweder auf den Ergebnissen einer Abfrage oder dem vollständigen Inhalt einer Datenbankdatei basiert. Diese Skalarfunktion basiert auf der CLDownload-Funktion, die als Plugin von IBM i Access Client Solutions (ACS) bereitgestellt wird. Die ACS-JAR-Datei wird über die PTF-Gruppe von IBM HTTP SERVER FOR i bereitgestellt und befindet sich unter folgendem Pfad: /QIBM/proddata/Access/ACS/Base/acsbundle.jar
CLOB-, BLOB-, DBCLOB- und XML-Daten werden von CLDownload nicht unterstützt. Sie kann zurückgegeben werden, indem die Spalte in einen Nicht-LOB-Zeichenfolgendatentyp umgewandelt wird. Diese Funktion wird im SYSTOOLS-Schema als Beispiel für das Aufrufen eines Qshell-Befehls aus einer SQL-Skalarfunktion bereitgestellt. Ähnlich wie bei anderen von Db2 for i bereitgestellten Tools in SYSTOOLS kann die SQL-Quelle extrahiert und als Modell zum Erstellen ähnlicher Hilfsfunktionen oder zum Erstellen einer angepassten Version innerhalb eines benutzerdefinierten Schemas verwendet werden. Die Funktion wurde mit IBM i 7.5 SF99950 Level 7 und IBM i 7.4 SF99704 Level 28 erweitert. Damit können Tabellenblätter mit proportionalen Spaltenbreiten für die Formate xls und xlsx erstellt werden.
Eine detaillierte Beschreibung der Funktion findet Sie hier.
Ausführen der Funktion mit 7.4 und Analyse des Jobprotokolls
Zur Ausführung der Funktion benötigt man zunächst eine IBM i mit mindestens 7.4. Für die Ausführung der Funktion mit Run SQL Scripts sind zwei Varianten möglich. Bei der ersten Variante wird der Name der Funktion mit abschließenden runden Klammern angegeben. Der Cursor wird zwischen die beiden runden Klammern positioniert. Danach wird die Bedienerhilfe mit F4 oder mit Strg+Leertaste aktiviert.
Quelle: Theo BärDie zweite Variante kann mit Hilfe der Menü-Auswahl Datenbank à Schemata à SYSTOOLS à Funktionen à Generate SQL à Query aktiviert werden:
Quelle: Theo BärDiese Auswahl liefert dann die folgende SQL-Anweisung mit den möglichen Parametern:
Quelle: Theo BärZum Testen wird die folgende SQL-Anweisung verwendet:
Quelle: Theo BärDurch die Ausführung dieser Anweisung in ACS Run SQL Scripts wird ein Jobprotokoll erzeugt, welches über das Menü Ansicht à Jobprotokoll angezeigt werden kann.
Darin findet man die folgende Anweisung:
SPREADSHEET COMMAND: QSYS/STRQSH CMD ('java -jar /QIBM/proddata/Access/ACS/Base/acsbundle.jar /plugin=cldownload /system=S062314T /clientfile=/home/TB/SQL_Spreadsheet.xlsx /sql="select * from qiws.QCUSTCDT " /colheadings=1')
Diese Anweisung kann man auch über die Befehlszeile der IBM i ausführen, auch mit 7.3. Wie bereits erwähnt, wird hier offensichtlich das Plugin CLDOWNLOAD von IBM i ACS verwendet.
Quelle: Theo BärErzeugen des SQL-Codes für die Erstellung der Funktion:
- Mit ACS Menü à Datenbank à Schemata…. (Abbildung)
- Mit SQL-Funktion xxx (Anweisung)
Folgende SQL-Anweisung wird generiert:
Quelle: Theo Bär
Quelle: Theo Bär
Quelle: Theo BärDiese Anweisung kann auch auf einer IBM i mit 7.3 ausgeführt werden. Damit wird in SYSTOOLS die Funktion GENERATE_SPREADSHEET erstellt und kann damit auch ausgeführt werden.
Vorschau:
Im nächsten Artikel werde ich weitere Features von IBM i ACS beschreiben. Bis dahin wünsche ich Ihnen weiterhin viel Spaß beim Vermehren Ihrer Fertigkeiten.
Der Autor Theo Bär schreibt regelmäßig für den MIDRANGE Deep Dive.
Sie erreichen ihn unter EDV-Beratung Theo Bär – Ringmauerweg 1 – 69250 Schönau – Tel. (+49) 6228 912 630 – e-Mail info[at]edv-baer.com.
