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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere ODBC-API » Mit Ergebnismengen arbeiten

 

Zeilen über einen Cursor aktualisieren und löschen

In der Dokumentation "Microsoft 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 Datenänderungsanweisung für die Spalten im Ergebnis sinnvoll ist, kann die Datenänderungsanweisung im Cursor ausgeführt werden.

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

    Weitere Hinweise finden Sie unter ansi_update_constraints-Option [Kompatibilität].

  • 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.