Compartir a través de


Recopilar y desplazar

La operación que consiste en recuperar una fila de un cursor recibe el nombre de recopilación. Éstas son las opciones de recopilación:

  • FETCH FIRST
    Recopila la primera fila del cursor.
  • FETCH NEXT
    Recopila la fila siguiente a la última fila recopilada.
  • FETCH PRIOR
    Recopila la fila anterior a la última fila recopilada.
  • FETCH LAST
    Recopila la última fila del cursor.
  • FETCH ABSOLUTE n
    Recopila la enésima fila a partir de la primera fila del cursor, si n es un entero positivo. Si n es un entero negativo, se recopila la fila que está n filas antes del final del cursor. Si n es 0, no se recopila ninguna fila.
  • FETCH RELATIVE n
    Recopila la fila que está n filas después de la última fila recopilada. Si n es positivo, se recopila la fila que está n filas después de la última fila recopilada. Si n es negativo, se recopila la fila que está n filas antes de la última fila recopilada. Si n es 0, se vuelve a recopilar la misma fila.

Cuando se abre un cursor, la posición de la fila actual del cursor está lógicamente delante de la primera fila. Esto hace que las diferentes opciones de recopilación tengan el siguiente comportamiento cuando pasan a ser la primera recopilación que se realiza tras abrir el cursor:

  • FETCH FIRST
    Recopila la primera fila del cursor.
  • FETCH NEXT
    Recopila la primera fila del cursor.
  • FETCH PRIOR
    No recopila una fila.
  • FETCH LAST
    Recopila la última fila del cursor.
  • FETCH ABSOLUTE n
    Recopila la enésima fila a partir de la primera fila del cursor, si n es un entero positivo. Si n es un entero negativo, se recopila la fila que está n filas delante del final del cursor (por ejemplo, n = -1 devuelve la última fila del cursor). Si n es 0, no se recopila ninguna fila.
  • FETCH RELATIVE n
    Recopila la enésima fila del cursor, si n es positivo. No se recopila ninguna fila si n es negativo o 0.

Los cursores de Transact-SQL están limitados a recopilar una fila cada vez. Los cursores de servidor de la API admiten la recopilación de bloques de filas en cada recopilación. Un cursor que admite la recopilación de varias filas a la vez recibe el nombre de cursor de bloque.

Clasificaciones de cursores

Un cursor se puede clasificar por las opciones de recopilación que admite:

  • Sólo hacia adelante
    Las filas se deben recopilar en serie, desde la primera a la última fila. FETCH NEXT es la única operación de recopilación permitida.
  • Desplazable
    Las filas se pueden recopilar aleatoriamente desde cualquier posición del cursor. Se permiten todas las operaciones de recopilación (a excepción de los cursores dinámicos que no admiten la recopilación absoluta).

Los cursores desplazables son especialmente útiles para las aplicaciones en pantalla. Se puede asignar un cursor a una cuadrícula o cuadro de lista de la aplicación. A medida que el usuario se desplaza por toda la cuadrícula, la aplicación utiliza recopilaciones de desplazamiento para recuperar las filas del cursor que desea ver el usuario.

API para recopilar filas

Las API de las instrucciones, funciones o métodos reales utilizados poseen diferentes nombres para recopilar filas:

  • Los cursores de Transact-SQL utilizan las instrucciones FETCH FIRST, FETCH LAST, FETCH NEXT, FETCH PRIOR, FETCH ABSOLUTE(n) y FETCH RELATIVE(n).
  • OLE DB utiliza métodos como IRowset::GetNextRows, IRowsetLocate::GetRowsAt, IRowsetLocate::GetRowsAtBookmark y IRowsetScroll::GetRowsAtRatio.
  • ODBC utiliza la función SQLFetch, que es la misma que FETCH NEXT para una fila, o la función SQLFetchScroll. SQLFetchScroll admite cursores de bloque y todas las opciones de recopilación (primera, última, siguiente, anterior, absoluta y relativa).
  • ADO utiliza los métodos Move, MoveFirst, MoveLast, MoveNext y MovePrevious Recordset para adquirir una posición en un cursor. A continuación, utiliza el método GetRows del objeto Recordset para recuperar una o más filas en dicha posición. También se puede llamar a GetRows directamente con el parámetro Start, que está establecido en el número de la fila que se desea recopilar.

Vea también

Otros recursos

Fetching Rows
Scrolling and Fetching Rows
Funciones del cursor (Transact-SQL)
FETCH (Transact-SQL)
Using Cursors

Ayuda e información

Obtener ayuda sobre SQL Server 2005