Embedded SQL-Schnellstart, Teil 2

11. November 2008 | Von | Kategorie: Load`n`go, Programmierung

Viele System i Entwickler betrachten Embedded SQL als das Beste aus beiden Welten. Mit Embedded SQL lassen sich SQL-Statements in ein in anderer Sprache – gewöhnlich RPG – geschriebenes Programm einbringen. Die strategische Einbindung von SQL in RPG-Programme kann die Performance verbessern, – Ein Internet-Artikel der NEWSolutions, NEWSabo plus.

von Sharon L. Hoffman

Über den Autor

Sharon L. Hoffman (shoffman at iSeriesNetwork.com) ist technische Autorin von NEWSolutions. Sharon Hoffman ist seit 1981 auf Midrange Systemen tätig und verfügt über intensive Erfahrungen in komplexer Anwendungsentwicklung und technischer Schulung. Übersetzt und für den deutschsprachigen Markt überarbeitet von Joachim Riener.

Mit Embedded SQL lassen sich SQL-Statements in ein in anderer Sprache – gewöhnlich RPG – geschriebenes Programm einbringen. Die strategische Einbindung von SQL in RPG-Programme kann die Performance verbessern, den Code vereinfachen und gelegentlich eine Funktionalität bieten, die weder SQL noch RPG alleine abzudecken in der Lage sind.
Aus Skill-Sicht ist alles, was für den Einsatz von Embedded SQL benötigt wird, eine ausgereifte RPG-Erfahrung sowie ein grundsätzliches Verständnis der SQL Syntax. Benötigt werden überdies der DB2 Query Manager und das Lizenzprogramm SQL Development Kit für iSeries (5722-ST1). In vielen Unternehmen, die System i Entwicklungen betreiben, ist dieses Programmprodukt bereits installiert, das außerdem in einigen Versionen von i5/OS ohne zusätzliche Kosten enthalten ist. Sind diese Grundvoraussetzungen gegeben, kann begonnen werden, die Einbindung von Embedded SQL in RPG zu erkunden.
Nach grundsätzlicher Erläuterung der Konzepte und Einführung in das Arbeiten mit Cursors im ersten Teil (erschienen in NEWSolutions Ausgabe Oktober 2007) befasst sich der zweite Teil mit rationeller Dateibearbeitung, Vermeidung von Problemen und Anmerkungen zum Start eines produktiven SQL Einsatzes.

au2_look_IMG_0027_Z_nf_oSieben (oder siebzig) Zeilen in einem Schritt bearbeiten

Versuchen Sie einmal sich zu erinnern, wie oft Ihnen Aufgaben wie diese gestellt wurden: „Ändern Sie die Nummer des Vertriebsgebietes aller Kunden in Kalifornien, Nevada, Arizona und New Mexico auf 27 ab.“ Gleichgültig, ob es sich nun um eine einmalige Aufgabenstellung oder eine fortwährende Anforderung handelt, die Entwicklung einer Lösung für solche oder ähnlich gestaltete Aufgaben kann sich als mühsam herausstellen und der resultierende Code ist möglicherweise nicht unbedingt als effizient zu bezeichnen. Wie auch immer, mittels SQL lassen sich auf einfache Weise mit einem einzigen Statement mehrere Zeilen ändern (oder einfügen oder löschen). Kommen solche Aufgabenstellungen häufiger vor, kann man – bezogen auf das obige Beispiel anstatt einmalig ein entsprechendes SQL Statement auszuführen – ein vorbereitetes Statement in ein RPG Programm einbetten und den Benutzer z. B. den gewünschten Staat und die neue Vertriebsgebietsnummer eingeben lassen. Die gleiche Technik lässt sich anwenden, wenn beispielsweise alle Zeilen, die bestimmte Kriterien erfüllen, gelöscht werden sollten, indem einfach das Update Statement durch ein Delete Statement ersetzt wird. Wann immer die Anforderung besteht, mehrere Zeilen einer Tabelle zu ändern oder zu löschen, sollte der Einsatz von Embedded SQL in Erwägung gezogen werden.

Code zum Artikel
Load`n`go

Vergleichen wir nun die in Abbildung 5 dargestellte Technik mit dem auf einem Cursor basierenden Update (Abbildung 4). Der Code in Abbildung 4 ändert bei Ausführung des Update Statements jeweils nur eine einzige Zeile, wogegen das Update Statement in Abbildung 5 bei jeder Ausführung mehrere Zeilen ändert. Sollen alle Zeilen, auf die bestimmte spezielle Kriterien zutreffen, in gleicher Weise modifiziert werden (z. B. Änderung der Verkaufsgebietsnummer auf 27), wird ein Update Statement verwendet, ohne zuvor ein Result Set zu erzeugen (Abbildung 5). Sollen hingegen mehrere Zeilen selektiert, jedoch nur einige davon verändert werden (z. B. indem einem Benutzer eine Liste zur Auswahl angeboten wird), ist es sinnvoll, zuerst das Result Set zu erzeugen und dann einen Cursor zu verwenden, um selektiv Sätze in der basierenden Datenbankdatei zu verändern (Abbildung 4).

Schlagworte: , , , , , , , , , , , , , , , , , , , , , ,

Schreibe einen Kommentar

Sie müssen eingeloggt sein, um einen Kommentar schreiben.