Anfang des Inhaltsbereichs

Hintergrunddokumentation OPEN CURSOR-Anweisung Dokument im Navigationsbaum lokalisieren

Verwendung

Mit der OPEN CURSOR-Anweisung können Sie eine dynamische SQL-Anweisung mit Parametern ausführen und dabei eine benannte Ergebnistabelle (Cursor) erzeugen.

Voraussetzungen

·       Sie haben die SQL-Anweisung mit der PREPARE-Anweisung zur Ausführung vorbereitet.

·       Falls Sie einen Deskriptor verwenden, haben Sie ihn mit der DESCRIBE-Anweisung initialisiert.

·       Sie haben den Cursor, also die benannte Ergebnistabelle, zuvor mit einer DECLARE CURSOR-Anweisung definiert.

Syntax

EXEC SQL [<session_spec>] [<for_clause>] OPEN <cursor_name>
         [ USING <parameter_list>
         | USING DESCRIPTOR [<descriptor name>] [KEEP]
         | INTO <parameter_list>
         | INTO DESCRIPTOR [<descriptor name>] [KEEP]]

·       Den Ergebnistabellennamen <cursor_name> in der OPEN CURSOR-Anweisung können Sie in einer Host-Variablen übergeben, wenn sie zum Programmierzeitpunkt nicht wissen, wie viele unterschiedliche Ergebnistabellen ihr Anwendungsprogramm verarbeiten wird.

·       Geben Sie KEEP an, wenn auf die OPEN CURSOR-Anweisung PUTVAL-Anweisungen folgen sollen.

·       Die INTO-Angabe hat hier dieselbe Bedeutung wie die Angabe von USING <parameter_list> und dient der Kompatibilität zu anderen Datenbanksystemen.

Beispiel

EXEC SQL BEGIN DECLARE SECTION;

int hnr;

char name[16];

float preis;

char cmd [100];

char *stmt;

char *cursor;

EXEC SQL END DECLARE SECTION;

strcpy (cmd, "INSERT (INTO???) hotel VALUES(10, 'Excelsior', \
79000, 'Ulm', 135.00)");

EXEC SQL PREPARE STMT1 FROM :cmd;

EXEC SQL DECLARE cur1 CURSOR FOR STMT1;

EXEC SQL OPEN cur1;

hnr = 10;

strcpy (cmd, "SELECT name, preis FROM hotel WHERE hnr=?");

stmt = "STMT2";

EXEC SQL PREPARE :stmt FROM :cmd;

cursor = "cur2";

EXEC SQL DECLARE :cursor CURSOR FOR :stmt;

EXEC SQL OPEN :cursor USING :hnr;

EXEC SQL FETCH :cursor INTO :name, :preis;

 

Ende des Inhaltsbereichs