Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Cursor definieren

Ein Cursor wird mit der DECLARE CURSOR-Anweisung definiert. Bei der Definition wird dem Cursor die Cursorbeschreibung zugeordnet. Die Cursorbeschreibung ist der Abfrageausdruck, der die Cursortabelle definiert.

Für statische Cursor und lokale Cursor (in Routinen) wird der Abfrageausdruck in der DECLARE CURSOR-Anweisung direkt angegeben. Für dynamische Cursor wird er zur Laufzeit des Programms aufgebaut (siehe Abschnitt „Dynamisch formulierte Cursorbeschreibung“).

Bei der Definition können folgende Eigenschaften des Cursors festgelegt werden:

Positionierung

Ein Cursor kann entweder frei positionierbar sein oder nicht.

Ein frei positionierbarer Cursor kann auf jeden Satz der Cursortabelle positioniert werden. Er wird durch Angabe des Schlüsselworts SCROLL definiert.

Ein mit NO SCROLL definierter Cursor kann nur auf den jeweils nächsten Satz positioniert werden.

Lebensdauer

Soll ein Cursor auch nach Beendigung einer Transaktion geöffnet bleiben, kann dies durch Angabe der WITH HOLD-Klausel realisiert werden. Voraussetzung dafür ist aber, dass der Cursor vor dem Ende der Transaktion in geöffnetem Zustand ist. Die WITH HOLD-Klausel ist bei lokalen Cursorn (in Routinen) nicht erlaubt.

Ein mit WITHOUT HOLD definierter Cursor wird bei Transaktionsende implizit geschlossen. WITHOUT HOLD ist der Default-Wert.

Sortierung

In der Cursorbeschreibung kann eine ORDER BY-Klausel angegeben werden, um die Sätze der Cursortabelle zu sortieren.

Treffermenge

In der Cursorbeschreibung kann eine Klausel FETCH FIRST max ROWS ONLY zur Begrenzung der gelieferten Treffermenge angegeben werden.

Änderbarkeit

Ein Cursor heißt änderbar, wenn der Abfrageausdruck, mit dem der Cursor definiert wurde, änderbar ist (siehe Abschnitt „Änderbarkeit von Abfrage-Ausdrücken“) und weder SCROLL noch ORDER BY noch die FOR READ ONLY-Klausel bei der Cursorvereinbarung angegeben wurden.

Ein änderbarer Cursor bezieht sich auf genau eine Basistabelle. In dieser Tabelle können dann einzelne Sätze, die mit Hilfe der Cursorposition bestimmt werden, gelöscht oder geändert werden. Mit der FOR UPDATE-Klausel in der Cursorvereinbarung können bei einem änderbaren Cursor diejenigen Spalten angegeben werden, deren Werte geändert werden dürfen.

Ist der Cursor nicht änderbar, kann er nur zum Lesen der Sätze aus der zugeordneten Cursortabelle verwendet werden. Bei FETCH FIRST max ROWS ONLY ist ein Cursor ebenfalls nicht änderbar.