Cursores en Postgresql

20/5/2014 Programación .NET en la consola.: Entendiendo cursors (cursores) en PostgreSQL. Compartir 1 Más Siguiente

Views 170 Downloads 0 File size 606KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

20/5/2014

Programación .NET en la consola.: Entendiendo cursors (cursores) en PostgreSQL. Compartir

1

Más

Siguiente blog»

Crear un blog

Programación .NET en la consola. Tutoriales y código acerca de la plataforma .NET,Redes con Cisco y PostgreSQL.

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 instrucción 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 MyBook s, aqui esta el script para su creación. 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.

Sobre la documentación de este si Todos los documentos del sitio estan protegidos bajo la licencia de documentac libre Free Documentacion License Proyecto GNU, ver

http://www.gnu.org/licenses/fdl.txt

Etiquetas Ingeniería de software (6) Lenguajes .NET (27) Linux (50) Redes (8) Windows (11)

Documentos para descargar 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 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 transacción. Empezamos con una transacción.

LINQ con Mono y C#

BEGIN;

Web Services con MonoDevelop I

Declaramos el cursor como una variable de tipo cursor y le asociamos una consulta SQL.

Web Services con MonoDevelop II

DECLARE mycursor CURSOR FOR SELECT * FROM Books;

Web Services con MonoDevelop III

Ahora podemos navegar entre los registros del resultset, con el comando FETCH, de este comando la sintaxis es:

XML con MonoDevelop I

FETCH [FORWARD | BACKWARD | ALL | NEXT]

XML con MonoDevelop II

A continuación unos ejemplos de su utilización. Obtenemos un par de registros.

Revistas

FETCH 2 FROM MyCursor;

Atix Begins

http://xomalli.blogspot.com/2013/01/entendiendo-cursors-cursores-en.html

1/4

20/5/2014

Programación .NET en la consola.: Entendiendo cursors (cursores) en PostgreSQL. DotnetMania Tuxinfo

Archivo del blog ► 2014 (11) ▼ 2013 (20) ► septiembre (3) ► agosto (5) ► julio (1) ► junio (1) ► mayo (1) ► abril (2) ► marzo (3) ► febrero (2) ▼ enero (2) Obtenemos los siguientes 4 registros y nos desplazamos: FETCH 4 FROM MyCursor;

Entendiendo cursors (cursores) en PostgreSQL. Trabajando con Binary Large Object (BLOB) en Postg... ► 2012 (17) ► 2011 (22) ► 2010 (21) ► 2009 (10) ► 2008 (1)

Seguidores

Participar en este sitio Google Friend Connect

Miembros (5)

Obtenemos 3 registros hacia atrás a partir del último registro. FETCH BACKWARD 3 FROM MyCursor;

¿Ya eres miembro? Iniciar sesión

Visitantes

Datos personales

Martín A. Márquez Ver todo mi perfil Avanzamos de nuevo y obtenemos los próximos 6 registros: FETCH FORWARD 6 FROM MyCursor;

http://xomalli.blogspot.com/2013/01/entendiendo-cursors-cursores-en.html

2/4

20/5/2014

Programación .NET en la consola.: Entendiendo cursors (cursores) en PostgreSQL.

Obtenemos el próximo registro

FETCH NEXT FROM MyCursor;

También 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;

http://xomalli.blogspot.com/2013/01/entendiendo-cursors-cursores-en.html

3/4

20/5/2014

Programación .NET en la consola.: Entendiendo cursors (cursores) en PostgreSQL.

Por último cerramos el cursor y confirmamos (o abortamos) la transacción. CLOSE MyCursor; COMMIT;

Publicado por Martín A. Márquez en 11:16 Etiquetas: Linux

Entrada más reciente

Página principal

Entrada antigua

Plantilla Awesome Inc.. Con la tecnología de Blogger.

http://xomalli.blogspot.com/2013/01/entendiendo-cursors-cursores-en.html

4/4