Está en la página 1de 13

Fundamentos de Base de Datos

Clase 10 – Cursores
Que es un cursor?
Las operaciones de una base de datos relacional actúan
en un conjunto completo de filas. El conjunto de filas
que devuelve una instrucción SELECT está compuesto
por todas las filas que satisfacen las condiciones de la
cláusula WHERE y se lo conoce como conjunto de
resultados. Las aplicaciones, especialmente las que son
interactivas y en línea, necesitan un mecanismo que
trabaje con una fila o un pequeño bloque de filas cada
vez. Los cursores son una extensión de los conjuntos de
resultados que proporcionan dicho mecanismo.
Que es un cursor?
Una biblioteca de cursores es software, que a menudo
se implementa como parte de un sistema de base de
datos o una API de acceso a datos, que se utiliza para
administrar los atributos de los datos devueltos de un
origen de datos (un conjunto de resultados). Estos
atributos incluyen la administración de
simultaneidad, la posición en el conjunto de
resultados, el número de filas devueltas y si puede
moverse hacia delante o hacia atrás (o ambos) a
través del conjunto de resultados.
Que es un cursor?
Un cursor realiza un seguimiento de la posición en el
conjunto de resultados y permite realizar varias
operaciones fila a fila en un conjunto de resultados,
con o sin volver a la tabla original. En otras palabras,
los cursores devuelven conceptualmente un conjunto
de resultados basado en las tablas de las bases de
datos. El cursor se denomina así porque indica la
posición actual en el conjunto de resultados, al igual
que el cursor en la pantalla del equipo indica la
posición actual
Que es un cursor?
Mediante cursores, puede:
• Especifique la posición en filas específicas del
conjunto de resultados.
• Recupera una fila o un bloque de filas basándose en
la posición del conjunto de resultados actual.
• Modificar los datos de las filas en la posición actual
del conjunto de resultados.
• Defina diferentes niveles de sensibilidad a los
cambios de datos realizados por otros usuarios.
Cursores en PostgreSQL
Los cursores son herramientas que nos permiten
manipular datos de una consulta y procesarlos,
generalmente mediante algún lenguaje de
programación. En PostgreSQL existen dos tipos de
cursores, explícitos o implícitos, dependiendo de
la necesidad de programación se puede utilizar
uno u otro.
Cursores Explicitos
Los cursores explícitos no son otra cosa que
variables  que almacenan datos respecto de
consultas a una o mas tablas, por lo tanto, un
cursor esta necesariamente formado por una
instrucción  SELECT y como tal, debe ser
declarado como una variable.
Cursores Explicitos
Cursores Explicitos
Tenemos 4 operaciones básicas para trabajar con un cursor explícito.

•Declaración del cursor: Lo tenemos que declarar en la zona de declaraciones, con


el siguiente formato: CURSOR <nombrecursor> IS <sentencia SELECT>;
•Apertura del cursor: Deberá colocarse en la zona de instrucciones, con el siguiente
formato: OPEN <nombrecursor>
Al hacerlo se ejecuta automáticamente la sentencia select y sus resultados se
almacenan en las estructuras internas de memoria manejadas por el cursor.
•Recogida de información: Para recuperar la información anteriormente guardada
en las estructuras de memoria interna tenemos que usar el siguiente formato:
FETCH <nombrecursor> INTO {<variable> | <listavariables>};
Si tenemos una única variable que recoge los datos de todas las columnas, el
formato de la variable sería el siguiente:
<variable> <nombrecursor>%ROWTYPE;
Si tenemos una lista de variables, cada una recogerá la columna correspondiente
de la cláusula select, por lo que serán del mismo tipo que las columnas.
•Cierre del cursor: CLOSE <nombrecursor>
Cursores Implícitos
 Este tipo de cursores se utiliza para operaciones
SELECT INTO. Se usan cuando la consulta
devuelve un único registro.
Son aquellas utilizadas para insertar, borrar,
modificar y consultar los datos en una base de
datos.  La principal característica es que no se
declara con la palabra reservada CURSOR y que se
suele utilizar para trabajar con un registro
especifico.
Recorriendo Cursores en PostgreSQL
• WHILE: El uso de la instrucción requiere un cursor Explícito,
abrir el cursor y finalmente cerrarlo, para operar sobre éste
usamos la instrucción FETCH que va capturando los datos fila a
fila hasta el final del cursor, es decir, mientras encuentre datos
(FOUND)
Recorriendo Cursores en PostgreSQL
• LOOP: Es una instrucción muy básica de iteración, también
requiere el uso de un cursor explícito, a diferencia del WHILE, es
necesario dar una salida mediante EXIT, en este caso, hasta que ya
no se encuentren datos en el cursor ( NOT FOUND ) lo cual indica
que se ha llegado al final del recorrido
Recorriendo Cursores en PostgreSQL
• FOR: El favorito de quienes programan en PostgreSQL por su
manera simple de recorrer los datos, sin importar si el cursor es
implícito, explicito, y sin abrir cursores para su procesamiento, por
todo lo anterior, es amado por muchos y odiado por muy pocos 

También podría gustarte