Freigeben über


SQLSetPos (Cursorbibliothek)

Wichtig

Dieses Feature wird in einer zukünftigen Version von Windows entfernt. Vermeiden Sie die Verwendung dieses Features in neuen Entwicklungsvorgängen, und planen Sie das Ändern von Anwendungen, die dieses Feature derzeit verwenden. Microsoft empfiehlt die Verwendung der Cursorfunktion des Treibers.

In diesem Thema wird die Verwendung der FUNKTION SQLSetPos in der Cursorbibliothek erläutert. Allgemeine Informationen zu SQLSetPos finden Sie unter SQLSetPos-Funktion.

Die Cursorbibliothek unterstützt den SQL_POSITION Vorgang nur für das Argument Operation in SQLSetPos. Es unterstützt den SQL_LOCK_NO_CHANGE-Wert nur für das LockType-Argument .

Wenn der Treiber keine Massenvorgänge unterstützt, gibt die Cursorbibliothek SQLSTATE HYC00 (Driver not capable) zurück, wenn SQLSetPos mit RowNumber gleich 0 aufgerufen wird. Dieses Treiberverhalten wird nicht empfohlen.

Die Cursorbibliothek unterstützt die SQL_UPDATE- und SQL_DELETE-Vorgänge in einem Aufruf von SQLSetPos nicht. Die Cursorbibliothek implementiert eine positionierte UPDATE- oder DELETE-SQL-Anweisung, indem eine durchsuchte update- oder delete-Anweisung mit einer WHERE-Klausel erstellt wird, die die in ihrem Cache gespeicherten Werte für jede gebundene Spalte aufzählt. Weitere Informationen finden Sie unter Verarbeiten positionierter Update- und Delete-Anweisungen.

Wenn der Treiber keine statischen Cursor unterstützt, sollte eine Anwendung, die mit der Cursorbibliothek arbeitet , SQLSetPos nur für ein Rowset aufrufen, das von SQLExtendedFetch oder SQLFetchScroll und nicht von SQLFetch abgerufen wird. Die Cursorbibliothek implementiert SQLExtendedFetch und SQLFetchScroll durch wiederholte Aufrufe von SQLFetch (mit einer Rowsetgröße von 1) im Treiber. Die Cursorbibliothek übergibt Aufrufe an SQLFetch hingegen an den Treiber. Wenn SQLSetPos für ein mehrzeiliges Rowset aufgerufen wird, das von SQLFetch abgerufen wird, wenn der Treiber keine statischen Cursor unterstützt, schlägt der Aufruf fehl, da SQLSetPos nicht mit vorwärtsgerichteten Cursorn funktioniert. Dies tritt auch dann auf, wenn eine Anwendung sqlSetStmtAttr erfolgreich aufgerufen hat, um SQL_ATTR_CURSOR_TYPE auf SQL_CURSOR_STATIC festzulegen, was die Cursorbibliothek auch dann unterstützt, wenn der Treiber keine statischen Cursor unterstützt.