Um innerhalb eines ESQL-Programms Sätze einer Ergebnistabelle bearbeiten zu können, verwendet der Anwender in SQL einen Cursor. Ein Cursor ist ein Zeiger innerhalb einer besonderen Ergebnistabelle, der sogenannten Cursortabelle, mit dem der Anwender auf die Sätze der Tabelle zugreifen kann.
Die Cursortabelle wird durch einen Abfrage-Ausdruck definiert, der bei der Definition des Cursors mit DECLARE CURSOR angegeben werden kann. Dieser Abfrage-Ausdruck wird erst dann ausgewertet, wenn der Cursor mit einer OPEN-Anweisung geöffnet wird. Enthält der Abfrage-Ausdruck Benutzervariablen, dann werden die zu diesem Zeitpunkt aktuellen Werte dieser Benutzervariablen herangezogen. Die Sätze können nun gelesen, oder, bei einem änderbaren Cursor, geändert oder gelöscht werden, bis der Cursor mit einer CLOSE-Anweisung wieder geschlossen wird.
Die SQL-Anweisung FETCH positioniert einen geöffneten Cursor auf einen Satz der Ergebnistabelle und macht diesen Satz zum aktuellen Satz.
Die UPDATE... CURRENT-Anweisung ändert den aktuellen Satz, auf den der Cursor zeigt.
Die DELETE... CURRENT-Anweisung löscht den Satz, auf den der Cursor zeigt.
Mit der STORE- und RESTORE-Anweisung wird verhindert, dass am Ende einer Transaktion die Position des Cursors verlorengeht. Die aktuelle Cursorposition bleibt nur erhalten, wenn sie vor dem Schließen mit STORE gesichert wird. RESTORE stellt einen mit STORE gesicherten Cursor wieder her.
Cursor mit Schubmodus (siehe auch "Dynamische Cursor")
Durch Angabe des Pragmas PREFETCH in der DECLARE CURSOR-Anweisung kann ein Cursor mit sogenanntem Schubmodus definiert werden. Im Schubmodus veranlasst die erste Ausführung der FETCH NEXT-Anweisung, dass mehrere Sätze in einen Zwischenpuffer gelesen werden. Der Anwender erhält mit der ersten Ausführung der FETCH-Anweisung nur den ersten übertragenen Satz. Die nachfolgenden Ausführungen der FETCH-Anweisung übertragen jeweils einen Satz aus dem Zwischenpuffer (ohne erneute Task-Task-Kommunikation), bis der Zwischenpuffer leer ist. Eine weitere Ausführung der FETCH-Anweisung führt dann wieder zur Übertragung mehrerer Sätze. Durch diesen Schubmodus kann die Bearbeitung eines Cursors wesentlich beschleunigt werden. Der Cursor mit Schubmodus darf stets nur mit ein und derselben FETCH-Anweisung angesprochen werden, d.h. derselben FETCH-Anweisung in einer Schleife oder einem Unterprogramm.
Die Größe des Zwischenpuffers kann mit der Anweisung PREFETCH-BUFFER (siehe "Konnektionsmodul-Parameter") festgelegt werden, die in der Konfigurationsdatei des Anwenderprogramms angegeben wird. Informationen über die Speicheranforderungen für den Zwischenpuffer und über die tatsächliche Nutzung liefert die Maske PREFETCH-BUFFERS des SESAM/SQL-Performance-Monitors SESMON (siehe Handbuch „ Datenbankbetrieb“).