Ein Cursor wird benutzt, um Zeilen aus einer Abfrage abzurufen, die mehrere Zeilen in ihrer Ergebnismenge hat. Ein Cursor ist ein Handle oder ein Name (identifier) für die SQL-Abfrage und eine Position innerhalb der Ergebnismenge.
Eine Einführung zu Cursor finden Sie unter Mit Cursor arbeiten.
Deklarieren Sie einen Cursor für eine bestimmte SELECT-Anweisung mit der DECLARE-Anweisung.
Öffnen Sie den Cursor mit der Anweisung OPEN.
Rufen Sie die Ergebnisse Zeile für Zeile mit der FETCH-Anweisung aus dem Cursor ab.
Wiederholen Sie das Abrufen der Zeilen, bis die Warnung Zeile nicht gefunden
zurückgegeben wird.
Fehler und Warnungen werden in der SQLCA-Struktur zurückgegeben. Siehe SQL-Kommunikationsbereich (SQLCA).
Schließen Sie den Cursor mit der CLOSE-Anweisung.
Als Voreinstellung werden Cursor automatisch am Ende der Transaktion geschlossen (bei COMMIT oder ROLLBACK). Cursor, die mit einer WITH HOLD-Klausel geöffnet werden, bleiben für folgende Transaktionen geöffnet, bis sie explizit geschlossen werden.
Das folgende einfache Beispiel zeigt den Gebrauch von Cursor:
void print_employees( void ) { EXEC SQL BEGIN DECLARE SECTION; char name[50]; char sex; char birthdate[15]; a_sql_len ind_birthdate; EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE C1 CURSOR FOR SELECT GivenName || ' ' || Surname, Sex, BirthDate FROM Employees; EXEC SQL OPEN C1; for( ;; ) { EXEC SQL FETCH C1 INTO :name, :sex, :birthdate:ind_birthdate; if( SQLCODE == SQLE_NOTFOUND ) { break; } else if( SQLCODE < 0 ) { break; } if( ind_birthdate < 0 ) { strcpy( birthdate, "UNKNOWN" ); } printf( "Name: %s Sex: %c Birthdate: %s.n",name, sex, birthdate ); } EXEC SQL CLOSE C1; } |
Vollständige Beispiele für Cursor finden Sie unter Beispiel für statischen Cursor und Beispiel für dynamischen Cursor.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |