Statische ODBC-Cursor

Ein statischer Cursor ist ein Cursor, in dem das Resultset statisch erscheint. Normalerweise werden änderungen, die an der Mitgliedschaft, Reihenfolge oder den Werten des Resultsets vorgenommen wurden, nach dem Öffnen des Cursors nicht erkannt. Angenommen, ein statischer Cursor ruft eine Zeile ab und eine andere Anwendung aktualisiert diese Zeile. Wenn der statische Cursor die Zeile zurückweet, sind die angezeigten Werte trotz der Änderungen, die von der anderen Anwendung vorgenommen wurden, unverändert.

Statische Cursor können ihre eigenen Updates, Lösch- und Einfügungen erkennen, obwohl sie dazu nicht erforderlich sind. Gibt an, ob ein bestimmter statischer Cursor diese Änderungen erkennt, wird über die Option SQL_STATIC_SENSITIVITY in SQLGetInfo gemeldet. Statische Cursor erkennen keine anderen Updates, Löschungen und Einfügungen.

Das durch das attribut der SQL_ATTR_ROW_STATUS_PTR-Anweisung angegebene Zeilenstatusarray kann SQL_ROW_SUCCESS, SQL_ROW_SUCCESS_WITH_INFO oder SQL_ROW_ERROR für jede Zeile enthalten. Es gibt SQL_ROW_UPDATED, SQL_ROW_DELETED oder SQL_ROW_ADDED für Zeilen zurück, die aktualisiert, gelöscht oder vom Cursor eingefügt wurden, vorausgesetzt, der Cursor kann solche Änderungen erkennen.

Statische Cursor werden in der Regel durch Sperren der Zeilen im Resultset oder durch Erstellen einer Kopie oder Momentaufnahme des Resultsets implementiert. Obwohl das Sperren von Zeilen relativ einfach zu erledigen ist, hat sie den Nachteil, dass die Parallelität erheblich reduziert wird. Das Erstellen einer Kopie ermöglicht eine größere Parallelität und ermöglicht dem Cursor, eigene Aktualisierungen, Lösch- und Einfügungen nachzuverfolgen, indem die Kopie geändert wird. Eine Kopie ist jedoch teurer zu erstellen und kann von den zugrunde liegenden Daten abweichen, da diese Daten von anderen geändert werden.