## DECLARE CURSOR-Anweisung (declare_cursor_statement)

Durch die DECLARE CURSOR-Anweisung (declare_cursor_statement) wird eine benannte Ergebnistabelle mit dem Namen result_table_name definiert und erzeugt.

### Syntax

<declare_cursor_statement> ::= DECLARE <result_table_name> CURSOR FOR <select_statement>

### Erläuterung

Existierende Ergebnistabellen werden implizit durch das Erzeugen einer Ergebnistabelle gleichen Namens gelöscht.

Alle Ergebnistabellen, die in der aktuellen Transaktion erzeugt wurden, werden implizit bei Beendigung der Transaktion mittels der ROLLBACK-Anweisung gelöscht.

Alle Ergebnistabellen werden implizit bei Beendigung der Sitzung mittels der RELEASE-Anweisung gelöscht. Sie können zuvor explizit durch eine CLOSE-Anweisung gelöscht werden.

Wenn der Name einer Ergebnistabelle identisch ist mit dem Namen einer Basistabelle, View-Tabelle oder eines Synonyms, kann auf diese Tabellen während der Lebensdauer der Ergebnistabelle nicht lesend zugegriffen werden. Wenn eine INSERT-, UPDATE-, DELETE- oder LOCK-Anweisung auf eine Ergebnistabelle erfolgt, deren Name mit dem Namen einer Basistabelle, View-Tabelle oder eines Synonyms identisch ist, erfolgt der Zugriff auf die entsprechende Nicht-Ergebnistabelle.

Zu jedem Zeitpunkt der Abarbeitung einer Ergebnistabelle existiert ein Standpunkt (Cursor), der sich vor der ersten Zeile, auf einer Zeile, hinter der letzten Zeile oder zwischen zwei Zeilen befinden kann. Nach dem Erzeugen der Ergebnistabelle befindet sich der Standpunkt (Cursor) vor der ersten Zeile der Ergebnistabelle.

Je nach Suchstrategie wird die Suche nach allen Zeilen der Ergebnistabelle durchgeführt und die Ergebnistabelle physisch erzeugt oder jeweils die nächste Zeile der Ergebnistabelle bei der Ausführung einer FETCH-Anweisung gesucht und nicht physisch gespeichert.

Ist die Ergebnistabelle leer, erhalten Sie die Rückmeldung 100 – Zeile nicht gefunden .