Beispiel für einen Cursor mit ORDER BY
Der Cursor CUR_KONTAKTE definiert einen Ausschnitt aus der Tabelle KONTAKT, in dem Nachname, Vorname und Abteilung für Kunden mit Kundennummern > 103 ausgewählt werden. Die Sätze sollen aufsteigend nach Abteilung und innerhalb der Abteilung absteigend nach dem Nachnamen sortiert werden.
|
Der Cursor wird mit OPEN geöffnet
OPEN cur_kontakte
Zu diesem Zeitpunkt umfasst die Cursortabelle folgende Sätze:
nachname | vorname | abteilung |
Buschmann | Anke | |
Bauer | Xaver | |
Heinlein | Robert | Einkauf |
Davis | Mary | Einkauf |
NULL-Werte sind in obiger Tabelle als leere Felder dargestellt. Bei der Sortierung mit ORDER BY werden in SESAM/SQL NULL-Werte als kleiner als alle Nicht-NULL-Werte betrachtet.
In einem ESQL-Programm kann die Cursortabelle satzweise in einer Schleife gelesen werden. Die Spaltenwerte werden in die Benutzervariablen NAME, VORNAME und AB-TEILUNG übertragen.
|
Beispiel für eine SQL-Datenmanipulation mit Cursor
Der Cursor CUR_MWST wählt alle Leistungen aus, für die keine Mehrwertsteuer berechnet wird. Er wird mit WITH HOLD spezifiziert, so dass er auch nach einem COM-MIT WORK im geöffneten Zustand bleibt, wenn er am Ende der Transaktion im geöffneten Zustand war:
|
Zum Zeitpunkt des OPEN erhält man die folgende Cursortabelle:
lnr | ltext | mwsatz |
4 | Systemanalyse | 0.00 |
5 | Datenbankentwurf | 0.00 |
10 | Reisekosten | 0.00 |
Für diese Leistungen soll ein Mehrwertsteuersatz von 15% berücksichtigt werden. Mit einer Folge von FETCH- und UPDATE-Anweisungen können die Sätze der Tabelle LEISTUNG geändert werden. Mit FETCH NEXT wird der Cursor auf den ersten Satz positioniert:
|
Anschließend wird der Cursor auf den zweiten Satz der Cursortabelle positioniert:
|
Die Transaktion wird mit COMMIT WORK geschlossen. Aufgrund der WITH HOLD-Klausel kann der Cursor auf den dritten Satz der Cursortabelle positioniert werden, indem unmittelbar auf COMMIT WORK eine FETCH-Anweisung eingegeben wird.