Next: ODBC
Up: SQL
Previous: Statisches SQL
Dynamisches SQL erlaubt die Definition und Ausführung von SQL-Anweisungen zur Laufzeit. Teile der Anweisungen befinden sich in Programmvariablen, die ihre Werte zur Laufzeit natürlich ändern können. Es sind somit komplexere und sehr flexible Programme unter Einbeziehung von Benutzereingaben zur Laufzeit möglich (der Benutzer kann zum Beispiel die Suchbedingung einer WHERE-Klausel interaktiv eingeben). Innerhalb einer SQL-Anweisung steht ein Fragezeichen für einen Platzhalter eines Variablenwerts.
Normalerweise wird die Ausführung von Befehlen in dynamischem SQL mit PREPARE vorbereitet und anschließend mit EXECUTE ausgeführt. Diese beiden Schritte können zu EXECUTE IMMEDIATE kombiniert werden.
Dynamisches SQL hat allerdings neben dem Vorteil der Flexibilität auch einige Nachteile:
- kompliziertere Programmierung
- Verwendung spezieller Datenstrukturen
- längere Laufzeit
Dynamisches SQL ist aber notwendig, wenn die Anwendung zum Zeitpunkt der Übersetzung die auszuführende SQL-Anweisung, die Anzahl und die Datentypen der Hostvariablen oder die Namen der Datenbankobjekte (Tabellen, Sichten, Spalten, Indizes, Benutzernamen) nicht kennt.
Je nachdem, was alles zur Übersetzungszeit nicht bekannt ist, was also dynamisch ist, ist die Programmierung von dynamischem SQL mehr oder weniger aufwendig.
- Für eine DML-Anweisung, die keine Abfrage ist und keine Eingabe-Hostvariablen verwendet, muß man zur Laufzeit nur die Zeichenkette für den Befehl erzeugen und an EXECUTE IMMEDIATE übergeben.
- Bei einer DML-Anweisung, die keine Abfrage ist und eine bekannte Anzahl von Eingabe-Hostvariablen mit bekannten Datentypen verwendet, muß man nach dem Erzeugen der Zeichenkette des Befehls die SQL-Anweisung mit PREPARE vorbereiten und bei der Ausführung die Werte der Eingabe-Hostvariablen an die Anweisung binden.
- Bei einer Abfrage mit einer bekannten Anzahl von Attributen und Eingabe-Hostvariablen, deren Datentypen alle bekannt sind, erzeugt man zuerst die Zeichenkette des Befehls, bereitet die SQL-Anweisung vor, führt sie aus und kann dann die Datensätze, solange welche vorhanden sind, mit FETCH auslesen.
- Für eine Abfrage mit einer unbekannten Anzahl von Attributen und Eingabe-Hostvariablen, deren Datentypen nicht bekannt sind, muß man schließlich zur Laufzeit Speicherplatz für die Datenkommunikation anlegen und insgesamt 18 Schritte beachten (siehe auch [SQL2]).
Next: ODBC
Up: SQL
Previous: Statisches SQL
Christoph Steindl
Thu Jul 24 14:37:19 MET DST 1997