Festlegen von Cursoroptionen (ODBC)

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)