OPEN öffnet einen Cursor, der mit DECLARE CURSOR vereinbart wurde.
Die in der Cursorbeschreibung vorkommenden Benutzervariablen bzw. die Werte für Platzhalter einer dynamisch formulierten Cursorbeschreibung werden ausgewertet.
Die in der Cursorbeschreibung vorkommenden Spezial-Literale (siehe "Spezial-Literale") sowie die Zeitfunktionen CURRENT_DATE, CURRENT_TIME und CURRENT_TIMESTAMP werden ausgewertet.
Alle zurückgelieferten Werte enthalten gleiches Datum und/oder gleiche Uhrzeit (siehe Abschnitt „Zeitfunktionen"). Diese Werte gelten für die Cursortabelle, solange der Cursor offen ist, und auch, wenn der Cursor mit RESTORE wieder geöffnet wird.
Nach der OPEN-Anweisung steht der Cursor vor dem ersten Satz der Ergebnistabelle, auch wenn die Cursorposition zuvor mit STORE gesichert wurde. Eine zuvor gespeicherte Cursorposition kann nach OPEN nicht mit RESTORE wiederhergestellt werden.
Ein Cursor ist nur in der Übersetzungseinheit ansprechbar, in der er mit DECLARE CURSOR vereinbart wurde. Die Cursorvereinbarung mit DECLARE CURSOR muss im Programmtext vor der OPEN-Anweisung stehen.
Bei einem dynamischen Cursor muss die Cursorbeschreibung zum Ausführungszeitpunkt der OPEN-Anweisung vorbereitet sein.
Der Cursor muss geschlossen sein.
OPEN
cursor
[USING {
variable [,
variable ]... | SQL DESCRIPTOR GLOBAL
deskriptor }]
variable ::= :
benutzervariable [[INDICATOR] :
indikatorvariable ]
cursor
Name des Cursors, der geöffnet werden soll.
USING-Klausel
Für dynamischen Cursor.
Angabe, woher die Eingabewerte für die dynamisch formulierte Cursorbeschreibung gelesen werden. Die USING-Klausel muss angegeben werden, wenn die Cursorbeschreibung Fragezeichen als Platzhalter für Werte enthält.
benutzervariable
Name einer Benutzervariable, deren Wert einem Platzhalter in der dynamisch formulierten Cursorbeschreibung zugewiesen wird.
Der Datentyp einer Benutzervariable muss mit dem Datentyp des zugehörigen Platzhalters verträglich sein (siehe Abschnitt „Werte für Platzhalter"). Steht der Platzhalter für ein Aggregat mit mehreren Elementen, muss die zugehörige Benutzervariable ein Vektor mit derselben Anzahl von Elementen sein.
Die Anzahl der angegebenen Benutzervariablen muss mit der Anzahl der Platzhalter in der Cursorbeschreibung übereinstimmen. Die Benutzervariablen werden in der angegebenen Reihenfolge den Platzhaltern in der dynamisch formulierten Cursorbeschreibung zugewiesen.
indikatorvariable
Name der Indikatorvariable für die vorangehende Benutzervariable. Ist die Benutzervariable ein Vektor, muss auch die Indikatorvariable ein Vektor mit derselben Elementanzahl sein.
Der Wert der Indikatorvariable zeigt an, ob der NULL-Wert übertragen werden soll:
< 0 >= 0 | Der NULL-Wert soll zugewiesen werden. Der Wert der Benutzervariable soll zugewiesen werden. |
deskriptor
Name eines SQL-Deskriptorbereichs, der die Datentypen und Werte für die Platzhalter in der dynamisch formulierten Cursorbeschreibung enthält.
Der SQL-Deskriptorbereich muss vorher angelegt und geeignet belegt worden sein:
Der Wert des Deskriptorbereichsfelds COUNT muss mit der Anzahl der benötigten Eingabewerte übereinstimmen (bei Aggregaten ein Eingabewert pro Element) und es muss gelten:
0 <= COUNT <= festgelegte Maximalanzahl von Deskriptorbereichseinträgen
Die Werte der DATA-Felder der Deskriptorbereichseinträge (bzw. NULL-Werte bei negativem INDICATOR) werden in der Reihenfolge der Einträge im Deskriptorbereich den Platzhaltern in der dynamisch formulierten Cursorbeschreibung zugewiesen. Die Datentypbeschreibung eines Eintrags muss mit dem Datentyp des zugehörigen Platzhalters verträglich sein (siehe Abschnitt „Werte für Platzhalter").
Beispiel
Das Beispiel öffnet den Cursor CUR_KONTAKTE. Der Cursor definiert einen Ausschnitt aus der Tabelle KONTAKT, in dem NACHNAME, VORNAME und ABTEILUNG für Kundennummern > 103 ausgewählt werden.
|
Siehe auch
CLOSE, DECLARE CURSOR, FETCH, PREPARE