Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Programmierung » ODBC-Unterstützung » Ergebnismengen in ODBC-Anwendungen

 

Zeilenaktualisierungen und -löschungen durch einen Cursor

In der Microsoft-Dokumentation ODBC Programmer's Reference wird empfohlen, dass Sie SELECT…FOR UPDATE benutzen, um anzuzeigen, dass eine Abfrage mit positionierten Vorgängen aktualisierbar ist. Es ist nicht erforderlich, die FOR UPDATE-Klausel in SQL Anywhere zu verwenden. SELECT-Anweisungen können automatisch aktualisiert werden, sofern die folgenden Bedingungen erfüllt sind:

  • Die zu Grunde liegende Abfrage unterstützt Aktualisierungen.

    Unter der Voraussetzung, dass eine Datenmanipulationsanweisung für die Spalten im Ergebnis sinnvoll ist, kann die Datenmanipulationsanweisung im Cursor ausgeführt werden.

    Die Datenbankoption ansi_update_constraints schränkt den Typ aktualisierbarer Abfragen ein.

  • Der Cursortyp unterstützt Aktualisierungen.

    Wenn Sie einen schreibgeschützten Cursor verwenden, können Sie die Ergebnismenge nicht aktualisieren.

Es gibt in ODBC zwei Alternativen, um positionsbasierte Updates und positionsbasiertes Löschen durchzuführen.

  • Die Funktion SQLSetPos wird verwendet.

    Abhängig von den angegebenen Parametern (SQL_POSITION, SQL_REFRESH, SQL_UPDATE, SQL_DELETE) legt SQLSetPos die Cursorposition fest und ermöglicht der Anwendung, die Darstellung der Daten in der Ergebnismenge oder die Daten selbst zu aktualisieren oder zu löschen.

    Diese Methode muss bei SQL Anywhere angewendet werden.

  • Mithilfe von SQLExecute positionsbasierte UPDATE- und DELETE-Anweisungen senden. Diese Methode darf nicht bei SQL Anywhere angewendet werden.

 Siehe auch