Está en la página 1de 4

20/5/2014 Programacin .NET en la consola.: Entendiendo cursors (cursores) en PostgreSQL.

http://xomalli.blogspot.com/2013/01/entendiendo-cursors-cursores-en.html 1/4
Tutoriales y cdigo acerca de la plataforma .NET,Redes con Cisco y PostgreSQL.
Programacin .NET en la consola.
domingo, 27 de enero de 2013
Entendiendo cursors (cursores) en PostgreSQL.
Para el manejo de grandes cantidades de datos tanto en PostgreSQL como en otras bases de datos relacionales existe el concepto de
cursors (cursores) los cuales representan un resultset (conjunto de datos) que son asociados a una variable, una variable de tipo cursor. Esta
variable representa un apuntador hacia una tabla virtual representada por una consulta y su respectivo comando SELECT asociado.
La diferencia entre un comando SELECT no asociado a un cursor y uno asociado, es que en el primero la consulta regresar todos los
registros a la vez y si queremos limitar la cantidad de registros para procesar debemos correr la consulta nuevamente agregando WHERE,
BETWEEN o cualquier otra instruccin para filtrar los resultados. En el caso del comando asociado a un cursor este nos permite
desplazarnos y limitar la cantidad de registros para procesar dentro del resultset sin necesidad de un nuevo comando SELECT.
Como ejemplo tenemos una tabla Books dentro de una base de datos llamada MyBooks, aqui esta el script para su creacin.
CREATE TABLE books
(
bookid serial NOT NULL,
title character varying(512),
publishyear smallint,
isbn character varying(13),
created date DEFAULT ('now'::text)::date,
CONSTRAINT books_pkey PRIMARY KEY (bookid)
)
Para mostrar la diferencia entre una consulta sin cursor y una consulta asociada a un cursor, ejecutamos la siguiente consulta.
SELECT bookid, title, publishyear, isbn, created FROM Books.
Esta consulta nos devuelve el siguiente resultado.
Ahora mostramos los comandos que pueden utilizarse al asociar una consulta a un cursor. Para el trabajo con cursores es necesario que
estos se encuentren dentro del mbito de una transaccin. Empezamos con una transaccin.
BEGIN;
Declaramos el cursor como una variable de tipo cursor y le asociamos una consulta SQL.
DECLARE mycursor CURSOR FOR SELECT * FROM Books;
Ahora podemos navegar entre los registros del resultset, con el comando FETCH, de este comando la sintaxis es:
FETCH [FORWARD | BACKWARD | ALL | NEXT]
A continuacin unos ejemplos de su utilizacin.
Obtenemos un par de registros.
FETCH 2 FROM MyCursor;
Todos los documentos del sitio estan
protegidos bajo la licencia de documentacin
libre Free Documentacion License
Proyecto GNU, ver
http://www.gnu.org/licenses/fdl.txt
Sobre la documentacin de este sitio
Ingeniera de software (6)
Lenguajes .NET (27)
Linux (50)
Redes (8)
Windows (11)
Etiquetas
ADO .NET con Mono I
ADO .NET con Mono II
ADO .NET con Mono III
Aprendiendo C# con Mono
ASP .NET con Mono I
ASP .NET con Mono II
ASP .NET con Mono III
Ensamblados de recursos con
MonoDevelop
Expresiones Lambda
LINQ con Mono y C#
Web Services con MonoDevelop I
Web Services con MonoDevelop II
Web Services con MonoDevelop III
XML con MonoDevelop I
XML con MonoDevelop II
Documentos para descargar
Atix
Begins
Revistas
Compartir
1

Ms

Siguiente blog Crear un blog
20/5/2014 Programacin .NET en la consola.: Entendiendo cursors (cursores) en PostgreSQL.
http://xomalli.blogspot.com/2013/01/entendiendo-cursors-cursores-en.html 2/4
Obtenemos los siguientes 4 registros y nos desplazamos:
FETCH 4 FROM MyCursor;
Obtenemos 3 registros hacia atrs a partir del ltimo registro.
FETCH BACKWARD 3 FROM MyCursor;
Avanzamos de nuevo y obtenemos los prximos 6 registros:
FETCH FORWARD 6 FROM MyCursor;
DotnetMania
Tuxinfo
2014 (11)
2013 (20)
septiembre (3)
agosto (5)
julio (1)
junio (1)
mayo (1)
abril (2)
marzo (3)
febrero (2)
enero (2)
Entendiendo cursors
(cursores) en PostgreSQL.
Trabajando con Binary Large
Object (BLOB) en Postg...
2012 (17)
2011 (22)
2010 (21)
2009 (10)
2008 (1)
Archivo del blog
Participar en este sitio
Google Friend
Connect
Miembros (5)
Ya eres miembro?
Iniciar sesin
Seguidores
Visitantes
Martn A.
Mrquez
Ver todo mi perfil
Datos
personales
20/5/2014 Programacin .NET en la consola.: Entendiendo cursors (cursores) en PostgreSQL.
http://xomalli.blogspot.com/2013/01/entendiendo-cursors-cursores-en.html 3/4
Obtenemos el prximo registro
FETCH NEXT FROM MyCursor;
Tambin podemos avanzar de forma negativa con FORWARD -[n] lo que es equivalente a BACKWARD [n].
FETCH FORWARD -10 FROM MyCursor;
Obtenemos todos los registros del cursor:
FETCH ALL FROM MyCursor;
20/5/2014 Programacin .NET en la consola.: Entendiendo cursors (cursores) en PostgreSQL.
http://xomalli.blogspot.com/2013/01/entendiendo-cursors-cursores-en.html 4/4
Entrada ms reciente Entrada antigua Pgina principal
Publicado por Martn A. Mrquez en 11:16
Etiquetas: Linux
Por ltimo cerramos el cursor y confirmamos (o abortamos) la transaccin.
CLOSE MyCursor;
COMMIT;
Plantilla Awesome Inc.. Con la tecnologa de Blogger.