Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um Cursoroptionen festzulegen, rufen Sie SQLSetStmtAttr auf, um festzulegen, oder SQLGetStmtAttr , um die Anweisungsoptionen abzurufen, die das Cursorverhalten steuern.
| Attribut | Bedeutung |
|---|---|
| SQL_ATTR_CURSOR_TYPE | Cursortyp vorwärts, statisch, dynamisch oder keysetgesteuert |
| SQL_ATTR_CONCURRENCY | Parallelitätssteuerungsoption für schreibgeschützte, sperrende, optimistische Verwendung von Zeitstempeln oder optimistischen Werten |
| SQL_ATTR_ROW_ARRAY_SIZE | Anzahl der in jedem Abruf abgerufenen Zeilen |
| SQL_ATTR_CURSOR_SENSITIVITY | Cursor, der Keine Aktualisierungen von Cursorzeilen durch andere Verbindungen anzeigt |
| SQL_ATTR_CURSOR_SCROLLABLE | Cursor, der vorwärts und rückwärts gescrollt werden kann |
Die Standardwerte für diese Attribute (vorwärts, schreibgeschützt, Rowsetgröße 1) verwenden keine Servercursor. Um Servercursor zu verwenden, müssen mindestens eines dieser Attribute auf einen anderen Wert als den Standard festgelegt werden, und die auszuführende Anweisung muss eine einzelne SELECT-Anweisung oder eine gespeicherte Prozedur sein, die eine einzelne SELECT-Anweisung enthält. Bei Verwendung von Servercursorn können SELECT-Anweisungen keine Klauseln verwenden, die von Servercursorn nicht unterstützt werden: COMPUTE, COMPUTE BY, FOR BROWSE und INTO.
Sie können den Cursortyp steuern, der entweder durch Festlegen von SQL_ATTR_CURSOR_TYPE und SQL_ATTR_CONCURRENCY oder durch Festlegen von SQL_ATTR_CURSOR_SENSITIVITY und SQL_ATTR_CURSOR_SCROLLABLE verwendet wird. Sie sollten nicht die beiden Methoden zum Angeben des Cursorverhaltens kombinieren.
Beispiel
Im folgenden Beispiel wird ein Anweisungshandle zugewiesen, ein dynamischer Cursortyp mit der optimistischen Parallelität der Zeilenversion festgelegt und anschließend eine SELECT-Anweisung ausgeführt.
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)SQL_CURSOR_DYNAMIC, SQL_IS_INTEGER);
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CONCURRENCY, SQLPOINTER)SQL_CONCUR_ROWVER, SQL_IS_INTEGER);
retcode = SQLExecDirect(hstmt1, SELECT au_lname FROM authors", SQL_NTS);
Beispiel
Im folgenden Beispiel wird ein Anweisungshandle zugewiesen, ein bildlaufbarer, sensibler Cursor festgelegt und anschließend eine SELECT-Anweisung ausgeführt.
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
// Set the cursor options and execute the statement.
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_SCROLLABLE, SQLPOINTER)SQL_SCROLLABLE, SQL_IS_INTEGER);
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_SENSITIVITY, SQLPOINTER)SQL_INSENSITIVE, SQL_IS_INTEGER);
retcode = SQLExecDirect(hstmt1, select au_lname from authors", SQL_NTS);
Siehe auch
Ausführen von Themen mit Vorgehensweisen für Abfragen (ODBC)