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.
Important
Dieses Feature wird in einer zukünftigen Version von Windows entfernt. Vermeiden Sie die Verwendung dieses Features in neuer Entwicklungsarbeit, und planen Sie, Anwendungen zu ändern, die dieses Feature derzeit verwenden. Microsoft empfiehlt die Verwendung der Cursorfunktion des Treibers.
Die Cursor-Bibliothek unterstützt positionierte Update- und Delete-Anweisungen, indem die WHERE CURRENT OF-Klausel in solchen Anweisungen durch eine WHERE-Klausel ersetzt wird, die die im Cache gespeicherten Werte für jede gebundene Spalte aufzählt. Die Cursorbibliothek übergibt die neu konstruierten UPDATE und-Anweisungen DELETE zur Ausführung an den Treiber. Für positionierte Update-Anweisungen aktualisiert die Cursor-Bibliothek dann ihren Cache aus den Werten in den Rowset-Puffern und setzt den entsprechenden Wert im Zeilenstatusarray auf SQL_ROW_UPDATED. Für positionierte Delete-Anweisungen setzt er den entsprechenden Wert im Zeilenstatusarray auf SQL_ROW_DELETED.
Caution
Die von der Cursor-Bibliothek erstellte WHERE-Klausel zur Identifizierung der aktuellen Zeile kann keine Zeilen, eine andere Zeile oder mehr als eine Zeile nicht identifizieren. Für weitere Informationen siehe Constructing Searched Statements, später in diesem Anhang.
Positionierte Update- und Delete-Anweisungen unterliegen den folgenden Einschränkungen:
Positionierte Update- und Delete-Anweisungen können nur in folgenden Fällen verwendet werden: Wenn eine SELECT-Anweisung das Ergebnisset generiert; wenn die SELECT-Anweisung keinen Join, keine UNION-Klausel oder eine GROUP BY-Klausel enthielt; und wenn Spalten, die einen Alias oder Ausdruck in der Auswahlliste verwendeten, nicht mit SQLBindCol gebunden waren.
Wenn eine Anwendung eine positionierte Update- oder Delete-Anweisung vorbereitet, muss sie dies tun, nachdem sie SQLFetch oder SQLFetchScroll aufgerufen hat. Obwohl die Cursorbibliothek die Anweisung zur Vorbereitung an den Treiber übermittelt, schließt sie die Anweisung und führt sie direkt aus, wenn die Anwendung SQLExecute aufruft.
Wenn der Treiber nur eine aktive Anweisung unterstützt, ruft die Cursor-Bibliothek den Rest des Ergebnissatzes ab und repetchelt dann den aktuellen Zeilensatz aus ihrem Cache, bevor sie eine positionierte Aktualisierungs- oder Löschanweisung ausführt. Wenn die Anwendung dann eine Funktion aufruft, die Metadaten in einem Ergebnisset zurückgibt (zum Beispiel SQLNumResultCols oder SQLDescribeCol), gibt die Cursorbibliothek einen Fehler zurück.
Wenn eine positionierte Aktualisierungs- oder Löschanweisung auf einer Spalte einer Tabelle ausgeführt wird, die eine Zeitstempelspalte enthält, die automatisch bei jeder Aktualisierung aktualisiert wird, schlagen alle nachfolgenden positionierten Aktualisierungs- oder Löschanweisungen fehl, wenn die Zeitstempelspalte gebunden ist. Dies geschieht, weil die von der Cursor-Bibliothek erstellte gesuchte Update- oder Delete-Anweisung die zu aktualisierende Zeile nicht genau identifiziert. Der Wert in der gesuchten Anweisung für die Zeitstempelspalte stimmt nicht mit dem automatisch aktualisierten Wert der Zeitstempelspalte überein.