So geht's
Tipp: Unsere Bücher
|
|
Bei der Realisierung von Tabellenfunktionen ist eine besondere, intern gesteuerte, prozedurale Aufruf-Folge zu beachten! Beispiel:
Die Funktion MYSCHEMA.TABLFILE liest in diesem Beispiel eine sequentielle Datei und gibt als Tabelle die laufende Nummer und die ersten 6 Zeichen des Datensatzes (TEXTWORD) zurück. Performance-Hinweis: Jeder Funktionsaufruf bewirkt eine vollständige Ausführung der Funktion mit Initialisierung (Datei allokieren und Öffnen), Verarbeitung (Lesen) und Abschlußverarbeitung (Datei schließen und freigeben). Werden externe Daten mehrfach in einem Programmablauf benötigt, so sollten sie in einer temporären Tabelle zwischengespeichert werden. |
|
Steuerungsbefehle wie CASE, IF, FOR, LOOP, REPEAT oder WHILE ermöglichen eine strukturierte SQL-Programmierung. Prozedurales SQL ist leichter zu programmieren als Stored Procedures in C oder COBOL Aus den SQL-Prozeduren werden C-Programme generiert. Die Implementierung nutzt C-Precompiler und Compiler der jeweiligen Betriebssystemumgebung. SQL-Prozeduren werden also nicht als dynamisches SQL ausgeführt: Der Precompiler (in Verbindung mit BIND) erzeugt ein Package, für das die Nutzerberechtigungen vergeben werden können. Die Erstellung von SQL-Stored Procedures wird unterstützt durch die REXX Prozedur DSNTPSMP (wird auch vom Stored Procedure Builder aufgerufen): DSNTPSMP ist selbst eine Stored Procedure und steuert den Ablauf von Generierung des C-Quelltextes, Precompile, Compile, Link, Bind bis zur Pflege der Systemtabellen. Im Unterschied zu Prozeduren in normaler" Programmiersprache wird bei SQL-Prozeduren der Quellcode (prozedurales SQL) in der Datenbank gespeichert (nicht der daraus generierten C-Quelltext) [in den Tabellen SYSIBM.SYSPSM, SYSIBM.SYSPSMOPTS, SYSIBM.SYSPSMOUT]. Maximum Quellcode 32 kB für OS/390 [64 kB Unix, Linux, Windows, OS/2] Achtung Ausnahme unter OS/390: Bei konventioneller Erstellung via JCL kann die Speicherung umgangen werden. |
siehe auch
|
Homepage | Informationstechnologie
| Aktuelles | Datenbanken
| DB2 | Publikationen
Links
| Kontakt | Impressum
| International Pages