Gemischte Cursor

Ein gemischter Cursor ist eine Kombination aus einem keysetgesteuerten Cursor und einem dynamischen Cursor. Es wird verwendet, wenn das Resultset zu groß ist, um Schlüssel für den gesamten Resultset vernünftig zu speichern. Gemischte Cursor werden implementiert, indem ein Keyset erstellt wird, das kleiner als das gesamte Resultset ist, aber größer als das Rowset ist.

Solange die Anwendung innerhalb des Keysets scrollt, ist das Verhalten keysetgesteuert. Wenn die Anwendung außerhalb des Keysets scrollt, ist das Verhalten dynamisch: Der Cursor ruft die angeforderten Zeilen ab und erstellt eine neue Keyset. Nachdem das neue Keyset erstellt wurde, rückgängig machen das Verhalten auf keysetgesteuert innerhalb dieses Keysets.

Angenommen, ein Resultset hat 1.000 Zeilen und verwendet einen gemischten Cursor mit einer Keysetgröße von 100 und einer Rowsetgröße von 10. Wenn das erste Rowset abgerufen wird, erstellt der Cursor ein Keyset, das aus den Tasten für die ersten 100 Zeilen besteht. Anschließend werden die ersten 10 Zeilen wie angefordert zurückgegeben.

Angenommen, eine andere Anwendung löscht die Zeilen 11 und 101. Wenn der Cursor versucht, Zeile 11 abzurufen, tritt eine Lücke auf, da er über einen Schlüssel für diese Zeile verfügt, aber keine Zeile vorhanden ist; Dies ist keysetgesteuertes Verhalten. Wenn der Cursor versucht, Zeile 101 abzurufen, erkennt der Cursor nicht, dass die Zeile fehlt, da sie keinen Schlüssel für die Zeile hat. Stattdessen wird abgerufen, was zuvor Zeile 102 war. Dies ist dynamisches Cursorverhalten.

Ein gemischter Cursor entspricht einem keysetgesteuerten Cursor, wenn die Keysetgröße der Ergebnissatzgröße entspricht. Ein gemischter Cursor entspricht einem dynamischen Cursor, wenn die Keysetgröße gleich 1 ist.