FETCH [ selector ] [ count ] { IN | FROM } cursor FETCH [ RELATIVE ] [ { [ # | ALL | NEXT | PRIOR ] } ] FROM ] cursor |
selector define la direcci�n de FETCH. Puede ser una de las siguientes:
selecciona la(s) siguiente(s) filas. Es el valor por defecto si se omite selector.
selecciona la(s) fila(s) anterior(es).
Palabra sin significado (Noise word), para compatibilidad con SQL92.
count determina cu�ntas filas hay que seleccionar. Puede ser uno de los siguientes:
Un entero con signo que especifica cu�ntas filas hay que seleccionar. Dese cuenta de que un entero negativo es equivalente a cambiar el sentido de FORWARD y BACKWARD.
Devuelve todas las filas restantes.
Equivalente a especificar un "count" de 1.
Equivalente a especificar un "count" de -1.
El nombre de un cursor abierto.
FETCH retorna el resultado de la consulta definida por el cursor especificado. Si la consulta falla ser�n mostrados los siguientes mensajes:
Si el cursor no est� previamente declarado. El cursor debe ser declarado dentro de un bloque de operaci�n (transaction block).
Postgres no soporta el posicionamiento absoluto de los cursores.
SQL92 permite devolver de forma repetida el cursor en su "posici�n actual" usando la sintaxis
FETCH RELATIVE 0 FROM cursor |
Postgres actualmente no soporta este concepto, de hecho, el valor cero est� reservado para indicar que todas las filas deben ser devueltas y es equivalente a especificar la palabra clave ALL. Si se ha usado la palabra clave RELATIVE, Postgres asume que el usuario desea un comportamiento como en SQL92 y devuelve este mensaje de error.
FETCH permite a un usuario devolver filas usando un cursor. El n�mero de filas devueltas est� especificado mediante #. Si el n�mero de filas restantes en el cursor es menor a than #, s�lo ser�n seleccionadas las disponibles. Sustituyendo la palabra clave ALL en lugar de un n�mero provocar� que sean devueltas todas las filas restantes en el cursor. Las instancias pueden ser seleccionadas en ambas direcciones hacia adelante y hacia atr�s (FORWARD y BACKWARD). La direcci�n por defecto es FORWARD.
Se permite especificar n�meros negativos en el contador. Un n�mero negativo es equivalente a modificar el sentido de las palabras clave FORWARD y BACKWARD. Por ejemplo, FORWARD -1 es igual aBACKWARD 1. |
Dese cuenta de que las palabras clave FORWARD y BACKWARD son extensiones Postgres. La sintaxis SQL92 tambi�n es soportada, especificada en la segunda forma del comando. V�anse m�s abajo detalles y temas de compatibilidad.
Una vez todas las filas se han seleccionado, todos los dem�s accesos de fetch no devuelven filas.
Postgres no soporta la caracter�stica de actualizar los datos en un cursor, ya que volver a mapear las actualizaciones del cursor en las tablas base no es posible por regla general, como sucede tambi�n en las actualizaciones de las vistas (VIEW). Por consiguiente, los usuarios deben explicitar comandos UPDATE para sustituir los datos.
Los cursores s�lo s�lo se deber�an usar dentro de transacciones, ya que los datos que almacenan abarcan m�ltiples consultas de usuario.
Usar MOVE para modificar la posici�n del cursor. DECLARE definir� un cursor. Refi�rase a BEGIN, COMMIT, y a ROLLBACK para mayor informaci�n acerca de las transacciones.
Los siguientes ejemplos recorren una tabla unsando un cursor. The following examples traverses a table using a cursor.
--montar y usar un cursor: -- BEGIN WORK; DECLARE liahona CURSOR FOR SELECT * FROM films; --seleccionar las primeras cinco filas en el cursor liahona: -- FETCH FORWARD 5 IN liahona; code |title |did| date_prod|kind |len -----+-----------------------+---+----------+----------+------ BL101|The Third Man |101|1949-12-23|Drama | 01:44 BL102|The African Queen |101|1951-08-11|Romantic | 01:43 JL201|Une Femme est une Femme|102|1961-03-12|Romantic | 01:25 P_301|Vertigo |103|1958-11-14|Action | 02:08 P_302|Becket |103|1964-02-03|Drama | 02:28 --Seleccionar la fila anterior: -- FETCH BACKWARD 1 IN liahona; code |title |did| date_prod|kind |len -----+-----------------------+---+----------+----------+------ P_301|Vertigo |103|1958-11-14|Action | 02:08 -- cerrar el cursor y commit work: -- CLOSE liahona; COMMIT WORK; |
El uso no embebido de los cursores es una extensi�n Postgres. La sintaxis y el uso de los cursores est� siendo comparada en contraposici�n a la forma embebida de los cursores definida en SQL92. |
SQL92 permite el posicionamiento absoluto del cursor para FETCH y tambi�n la localizaci�n de los resultados en variables expl�citas.
FETCH ABSOLUTE # FROM cursor INTO :variable [, ...] |
El cursor debe ser posicionado al n�mero de fila absoluto especificado. Todos los n�meros de filas en Postgres son n�meros relativos, por lo tanto no se soporta esta caracter�stica.
Variable(s) objetivo del host.