FETCH - Amazon Redshift

FETCH

Recupera filas con un cursor. Para obtener información acerca de la declaración de un cursor, consulte DECLARE.

FETCH recupera filas en función de la posición actual dentro del cursor. Cuando se crea un cursor, se posiciona antes de la primera fila. Después de FETCH, el cursor se posiciona en la última fila recuperada. Si FETCH se ejecuta en el extremo de las filas disponibles, como tras un comando FETCH ALL, el cursor queda posicionado después de la última fila.

FORWARD 0 recupera la fila actual sin mover el cursor; es decir, recupera la fila que se buscó más recientemente. Si el cursor se posiciona antes de la primera fila o después de la última fila, no se devuelve una fila.

Cuando se recupera la primera fila de un cursor, el conjunto completo de resultados se materializa en el nodo principal, en la memoria o en el disco, si es necesario. Debido al posible impacto negativo en el rendimiento del uso de cursores con conjuntos de resultados grandes, recomendamos usar enfoques alternativos cuando sea posible. Para obtener más información, consulte Consideraciones acerca del rendimiento cuando se utilizan cursores.

Para obtener más información, consulte DECLARE, CLOSE.

Sintaxis

FETCH [ NEXT | ALL | {FORWARD [ count | ALL ] } ] FROM cursor

Parámetros

NEXT

Recupera la última fila. Esta es la opción predeterminada.

ALL

Recupera todas las filas restantes. (Igual que FORWARD ALL). ALL no es compatible con los clústeres de un solo nodo.

FORWARD [ count (número) | ALL ]

Recupera el siguiente count (número) de filas o todas las filas restantes. FORWARD 0 recupera la fila actual. Para los clústeres de un nodo, el valor máximo del valor count es 1000. FORWARD ALL no es compatible con los clústeres de un solo nodo.

cursor

Nombre del nuevo cursor.

Ejemplo de FETCH

En el siguiente ejemplo, se declara un cursor denominado LOLLAPALOOZA para seleccionar información de ventas para el evento Lollapalooza y, luego, se recuperan filas del conjunto de resultados a través del cursor:

-- Begin a transaction begin; -- Declare a cursor declare lollapalooza cursor for select eventname, starttime, pricepaid/qtysold as costperticket, qtysold from sales, event where sales.eventid = event.eventid and eventname='Lollapalooza'; -- Fetch the first 5 rows in the cursor lollapalooza: fetch forward 5 from lollapalooza; eventname | starttime | costperticket | qtysold --------------+---------------------+---------------+--------- Lollapalooza | 2008-05-01 19:00:00 | 92.00000000 | 3 Lollapalooza | 2008-11-15 15:00:00 | 222.00000000 | 2 Lollapalooza | 2008-04-17 15:00:00 | 239.00000000 | 3 Lollapalooza | 2008-04-17 15:00:00 | 239.00000000 | 4 Lollapalooza | 2008-04-17 15:00:00 | 239.00000000 | 1 (5 rows) -- Fetch the next row: fetch next from lollapalooza; eventname | starttime | costperticket | qtysold --------------+---------------------+---------------+--------- Lollapalooza | 2008-10-06 14:00:00 | 114.00000000 | 2 -- Close the cursor and end the transaction: close lollapalooza; commit;