Freigeben über


Abrufoperationen und Scrollen

Die Operation, durch die eine Zeile von einem Cursor abgerufen wird, wird als Abrufvorgang bezeichnet. Diese Abrufoptionen stehen Ihnen zur Verfügung:

  • FETCH FIRST
    Dadurch wird die erste Zeile im Cursor abgerufen.
  • FETCH NEXT
    Dadurch wird die Zeile nach der zuletzt abgerufenen Zeile abgerufen.
  • FETCH PRIOR
    Dadurch wird die Zeile vor der zuletzt abgerufenen Zeile abgerufen.
  • FETCH LAST
    Dadurch wird die letzte Zeile im Cursor abgerufen.
  • FETCH ABSOLUTE n
    Dadurch wird die n-te Zeile ab der ersten Zeile im Cursor abgerufen, wenn es sich bei n um eine positive ganze Zahl handelt. Wenn n eine negative ganze Zahl ist, wird die Zeile abgerufen, die sich n Zeilen vor dem Ende des Cursors befindet. Wenn n gleich 0 ist, werden keine Zeilen abgerufen.
  • FETCH RELATIVE n
    Dadurch wird die Zeile abgerufen, die sich n Zeilen entfernt von der zuletzt abgerufenen Zeile befindet. Wenn n eine positive ganze Zahl ist, wird die Zeile abgerufen, die sich n Zeilen nach der zuletzt abgerufenen Zeile befindet. Wenn n eine negative ganze Zahl ist, wird die Zeile abgerufen, die sich n Zeilen vor der zuletzt abgerufenen Zeile befindet. Wenn n gleich 0 ist, wird dieselbe Zeile noch einmal abgerufen.

Wird ein Cursor geöffnet, befindet sich die aktuelle Zeilenposition logisch vor der ersten Zeile. Dies führt dazu, dass verschiedene Abrufoptionen folgende Verhaltensweisen aufweisen, wenn sie den ersten Abrufvorgang nach dem Öffnen des Cursors sind:

  • FETCH FIRST
    Dadurch wird die erste Zeile im Cursor abgerufen.
  • FETCH NEXT
    Dadurch wird die erste Zeile im Cursor abgerufen.
  • FETCH PRIOR
    Es wird keine Zeile abgerufen.
  • FETCH LAST
    Dadurch wird die letzte Zeile im Cursor abgerufen.
  • FETCH ABSOLUTE n
    Dadurch wird die n-te Zeile ab der ersten Zeile im Cursor abgerufen, wenn es sich bei n um eine positive ganze Zahl handelt. Wenn es sich bei n um eine negative ganze Zahl handelt, wird die Zeile abgerufen, die sich n Zeilen vor dem Ende des Cursors befindet (beispielsweise wird bei n = -1 die letzte Zeile im Cursor zurückgegeben). Wenn n gleich 0 ist, werden keine Zeilen abgerufen.
  • FETCH RELATIVE n
    Dadurch wird die n-te Zeile im Cursor abgerufen, wenn n positiv ist. Wenn n gleich 0 oder negativ ist, werden keine Zeilen abgerufen.

Transact-SQL-Cursor können nur jeweils eine Zeile abrufen. API-Servercursor unterstützen das Abrufen von Zeilenblöcken bei jedem Abrufvorgang. Ein Cursor, der das Abrufen mehrerer Zeilen zur selben Zeit unterstützt, wird als Blockcursor bezeichnet.

Cursorklassifizierungen

Ein Cursor kann durch die Abrufoptionen, die unterstützt werden, klassifiziert werden:

  • Vorwärtscursor
    Die Zeilen müssen seriell von der ersten bis zur letzten Zeile abgerufen werden. FETCH NEXT ist der einzig zulässige Abrufvorgang.
  • Scrollfähigkeit
    Die Zeilen können an beliebiger Stelle im Cursor abgerufen werden. Alle Abrufvorgänge sind zulässig (außer, dass dynamische Cursor FETCH ABSOLUTE nicht unterstützen).

Scrollfähige Cursor sind vor allem für die Unterstützung von Onlineanwendungen nützlich. Ein Cursor kann einer Tabelle oder einem Listenfeld in der Anwendung zugeordnet werden. Während der Benutzer nach unten oder oben oder an beliebige Stellen in der Tabelle scrollt, verwendet die Anwendung scrollgestützte Abrufvorgänge, um die Zeilen aus dem Cursor abzurufen, die der Benutzer sehen möchte.

APIs für das Abrufen von Zeilen

Die APIs für die tatsächlich verwendeten Anweisungen, Funktionen oder Methoden wurden für das Abrufen von Zeilen unterschiedlich benannt:

  • Transact-SQL-Cursor verwenden die Anweisungen FETCH FIRST, FETCH LAST, FETCH NEXT, FETCH PRIOR, FETCH ABSOLUTE(n) und FETCH RELATIVE(n).
  • OLE DB verwendet Methoden, wie z. B. IRowset::GetNextRows, IRowsetLocate::GetRowsAt, IRowsetLocate::GetRowsAtBookmark und IRowsetScroll::GetRowsAtRatio.
  • ODBC verwendet die SQLFetch-Funktion, die mit FETCH NEXT für eine Zeile identisch ist, oder die SQLFetchScroll-Funktion. SQLFetchScroll unterstützt Blockcursor sowie alle Abrufoptionen (SQL_FETCH_FIRST; SQL_FETCH_LAST; SQL_FETCH_NEXT; SQL_FETCH_PRIOR, SQL_FETCH_ABSOLUTE und SQL_FETCH_RELATIVE).
  • ADO verwendet die Methoden Move, MoveFirst, MoveLast, MoveNext und MovePreviousRecordset, um eine Position in einem Cursor zu erhalten. Die GetRows-Methode des Recordset-Objekts wird verwendet, um eine oder mehrere Zeilen an dieser Position abzurufen. GetRows kann auch direkt mit dem Start-Parameter aufgerufen werden, der auf die Position der abzurufenden Zeile festgelegt ist.

Siehe auch

Andere Ressourcen

Fetching Rows
Scrolling and Fetching Rows
Cursorfunktionen (Transact-SQL)
FETCH (Transact-SQL)
Using Cursors

Hilfe und Informationen

Informationsquellen für SQL Server 2005