Databases Reference
In-Depth Information
imperativ - einen Satz nach dem anderen
Öffne eine Datei;
lies den ersten Satz;
solange der letzte Datenzugriff erfolgreich war, tue Folgendes:
verarbeite den Satz;
lies den nächsten Satz
Ende tue
Dieser Bruch zwischen den beiden Paradigmen relational und imperativ wird in
der Literatur als impedance mismatch bezeichnet.
Wenn wir in einer imperativen Programmiersprache eine Relation satzweise verar-
beiten wollen, müssen wir einen Weg finden, wie wir dieser Programmiersprache
eine Relation satzweise zur Verfügung stellen. Hierbei kommt es nicht infrage, ein-
fach eine Relation wie eine Datei zu behandeln und alle Verknüpfungen in die Pro-
grammierung zu legen. Wir wollen natürlich die Vorteile des relationalen Ansatzes
mit in die Schnittstelle übernehmen. In einer Client-Server-Verbindung wäre es
auch geradezu töricht, wenn eine imperative Sprache über eine DFÜ-Verbindung
satzweise mehrere Relationen verknüpfen und dabei jeden zu untersuchenden
Satz über die DFÜ-Verbindung »schaufeln« würde.
Die Lösung ist der so genannte Cursor. Ein Cursor ist hier aber nicht, wie vom Moni-
tor her bekannt, ein blinkender Bildpunkt. Ein Cursor beschreibt eine beliebig kom-
plexe SELECT-Anweisung, deren Tupel satzweise im Anwendungsprogramm ver-
arbeitet werden können. Somit stellt ein Cursor ein Analogon zu einer Datei in einer
imperativen Programmiersprache dar. Diese Analogie kann sogar weitergeführt
werden: Der Cursor entspricht nicht einer physikalischen Datei, die ja außerhalb des
Programms existiert, sondern einer logischen Verbindung zur Datei. In Program-
miersprachen wird einer Datei üblicherweise programmintern ein Name zugeord-
net, über den diese Datei angesprochen wird. Dieser Name muss nicht identisch mit
dem Dateinamen auf dem Datenträger sein - in vielen Fällen kann er gar nicht iden-
tisch dazu sein, da die Syntax für Bezeichner in Programmiersprachen von der Syn-
tax für Dateibezeichner in Betriebssystemen abweicht. Dementsprechend hat ein
Cursor einen Namen, über den die SELECT-Anweisung angesprochen wird.
SQL-Anweisung
Bedeutung
DECLARE cname CURSOR
FOR ...
Logische Beschreibung eines Cursors. Diese Beschreibung bewirkt
noch keine Aktion der Datenbankmaschine.
OPEN cname
Die Verbindung zur Abfrage wird hergestellt. Die Vorbereitungen
in der Datenbankmaschine werden getroffen.
FETCH cname
Der nächste (oder auf andere Weise positionierte) Satz wird in
die entsprechenden Variablen des Wirtsprogramms geladen.
Schließen des Cursors - die entsprechende Verbindung zur
Datenbank wird aufgehoben.
CLOSE cname
Tabelle 7.3: Das Cursor-Konzept in SQL
 
Search WWH ::




Custom Search