Freigeben über


Schnelle Vorwärtscursor (ODBC)

Wenn eine Verbindung mit einer Instanz von SQL Server besteht, werden Leistungsoptimierungen für schreibgeschützte Vorwärtscursor vom SQL Server Native Client-ODBC-Treiber unterstützt. Schnelle Vorwärtscursor werden vom Treiber und Server intern auf ganz ähnliche Weise implementiert wie Standardresultsets. Neben einer hohen Leistungsfähigkeit besitzen schnelle Vorwärtscursor auch folgende Eigenschaften:

  • SQLGetData wird nicht unterstützt. Die Resultsetspalten müssen an Programmvariablen gebunden werden.

  • Wenn der Server auf das Ende des Cursors stößt, wird der Cursor automatisch geschlossen. Die Anwendung muss trotzdem SQLCloseCursor oder SQLFreeStmt(SQL_CLOSE) aufrufen, aber der Treiber muss dem Server keine Anforderung zum Schließen senden. Damit wird ein Roundtrip durch das Netzwerk zum Server eingespart.

Anwendungen fordern mit dem treiberspezifischen Anweisungsattribut SQL_SOPT_SS_CURSOR_OPTIONS schnelle Vorwärtscursor an. Wenn dieses auf SQL_CO_FFO festgelegt wird, werden schnelle Vorwärtscursor ohne die automatische Abrufoption aktiviert. Wenn es auf SQL_CO_FFO_AF festgelegt wird, wird auch die automatische Abrufoption aktiviert. Weitere Informationen zur automatischen Abrufoption finden Sie unter Using Autofetch with ODBC Cursors.

Schnelle Vorwärtscursor mit automatischer Abrufoption können eingesetzt werden, um kleine Resultsets mit nur einem Roundtrip zum Server abzurufen. In den nachfolgenden Anweisungen steht n für die Anzahl der zurückzugebenden Zeilen:

  1. Legen Sie SQL_SOPT_SS_CURSOR_OPTIONS auf SQL_CO_FFO_AF fest.

  2. Legen Sie SQL_ATTR_ROW_ARRAY_SIZE auf n + 1 fest.

  3. Binden Sie die Ergebnisspalten an Arrays mit n + 1 Elementen (um sicherzugehen, wenn tatsächlich n + 1 Zeilen abgerufen werden).

  4. Öffnen Sie den Cursors entweder mit SQLExecute oder mit SQLExecDirect.

  5. Wenn der Rückgabestatus SQL_SUCCESS lautet, rufen Sie SQLFreeStmt oder SQLCloseCursor auf, um den Cursor zu schließen. Alle Daten für die Zeilen sind in den gebundenen Programmvariablen enthalten.

Mit diesen Schritten sendet die SQLExecDirect- oder SQLExecute-Anweisung eine Anforderung zum Öffnen eines Cursors, wobei die automatische Abrufoption aktiviert wird. Auf diese einzelne Anforderung vom Client, führt der Server Folgendes aus:

  • Er öffnet den Cursor.

  • Er erstellt das Resultset und sendet die Zeilen an den Client.

  • Weil die Rowsetgröße auf einen Wert festgelegt wurde, der um 1 größer als die Anzahl der Resultsetzeilen ist, erkennt der Server das Ende des Cursors und schließt den Cursor.

Siehe auch

Konzepte

Details über das Programmieren von Cursorn (ODBC)