Sunteți pe pagina 1din 8

UNIVERIDAD CENTRAL DEL ECUADOR

FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS


CARRERA DE INGENIERIA INFORMATICA

CURSORES

Integrantes:
o Cadena Flores Giovanny Rodrigo
o Chávez Estrella Mario Roberto

Semestre:
o Sexto semestre – 1

Ingeniero:
o Ing. Jorge Gordillo

2016 – 2017

1
INDICE

1.- Definición---……..…………….…………………………………………………………03
2.- Tipos de Cursores….………………………………..……………………………………03
3.1.- Cursores Implícitos………...…………………………………………………03
3.2.- Cursores Explícitos...…………....……………………………………………03
3.- Pasos para crear un curso……...……..………………………..…………………………04
3.1.- Declarar el cursor………...……………………………………………………04
3.2.- Abrir el cursor en servidor...……..……………………………………………04
3.3.- Recuperar filas....………...……………………………………………………05
3.4.- Cerrar el cursor……………………………….……………………………….05
4.- Consideraciones…...…………………..………………………..…………………………05
5.- Atributo de los cursores……………...……..……………………..………………………06
6.- Ejemplo Cursor Implícito.…………...……..……………………..………………………06
7.- Ejemplo Cursor Explicito….………...……..……………………..………………………07
8.- Bibliografía……………………..…………………………………………………………08

2
CURSORES EN PL/SQL

CURSORES

DEFINICION

“Un cursor es el nombre para un área memoria privada que contiene información
procedente de la ejecución de una sentencia SELECT. Cada cursor tiene unos atributos
que nos devuelven información útil sobre el estado del cursor en la ejecución de la
sentencia SQL.” Alcalde A. (2015).

“Cuando un cursor está abierto y los datos referenciados por la


consulta SELECT cambian, estos cambios no son recogidos por el cursor.

PL/SQL crea implícitamente un cursor para todas las sentencias SQL de manipulación de
datos sobre un conjunto de filas, incluyendo aquellas que solo devuelven una sola fila.

En PL/SQL no se pueden utilizar sentencias SELECT de sintaxis básica (SELECT


<lista> FROM <tabla>). PL/SQL utiliza cursores para gestionar las
instrucciones SELECT.” Alcalde A. (2015).

Un cursor es un conjunto de registros devuelto por una instrucción SQL.

TIPOS DE CURSORES

 Cursores implícitos. Este tipo de cursores se utiliza para operaciones SELECT


INTO. Se usan cuando la consulta devuelve un único registro.

 Cursores explícitos. Son los cursores que son declarados y controlados por el
programador. Se utilizan cuando la consulta devuelve un conjunto de registros.
Ocasionalmente también se utilizan en consultas que devuelven un único registro por
razones de eficiencia. Son más rápidos.

3
PASOS PARA CREAR UN CURSOR
1. Declarar el cursor
2. Abrir el cursor en el servidor
3. Recuperar cada una de sus filas (bucle)
4. Cerrar el cursor

 Declarar el Cursor:

Al igual que cualquier otra variable, el cursor se declara en la sección DECLARE. Se


define el nombre que tendrá el cursor y qué consulta SELECT ejecutará. No es más que
una declaración. La sintaxis básica es:

CURSOR nombre_cusor IS instrucción_SELECT


CURSOR nombre_cursor(param1 tipo1, ..., paramN tipoN) IS
instrucción_SELECT

“Una vez que el cursor está declarado ya podrá ser utilizado dentro del bloque de
código. Antes de utilizar un cursor se debe abrir. En ese momento se ejecuta la
sentencia SELECT asociada y se almacena el resultado en el área de contexto
(estructura interna de memoria que maneja el cursor). Herrate P.” (2012).

 Abrir el cursor en el servidor:

Al abrir el cursor se ejecuta la sentencia SELECT asociada y cuyo resultado se guarda


en el servidor en un área de memoria interna (tablas temporales) de las cuales se va
retornando cada una de las filas según se va pidiendo desde el cliente.

La sintaxis de apertura de un cursor es:

OPEN nombre_cursor;
OPEN nombre_cursor (valor1, valor2, ..., valorN);

Una vez que el cursor está abierto, se podrá empezar a pedir los resultados al
servidor.
4
 Recuperar cada una de sus filas:

Una vez que el cursor está abierto en el servidor se podrá hacer la petición de
recuperación de fila. En cada recuperación solo se accederá a una única fila. La
sintaxis de recuperación de fila de un cursor es: Herrate P. (2012).

FETCH nombre_cursor INTO variables;

Podremos recuperar filas mientras la consulta SELECT tenga filas pendientes de


recuperar. Para saber cuándo no hay más filas podemos consultar los siguientes
atributos de un cursor:

Al recuperar un registro, la información recuperada se guarda en una o varias variables.


Si sólo se hace referencia a una variable, ésta se puede declarar con %ROWTYPE.
Si se utiliza una lista de variables, cada variable debe coincidir en tipo y orden con
cada una de las columnas de la sentencia SELECT.
Así lo acción más típica es recuperar filas mientras queden alguna por recuperar en el
servidor. Esto lo podremos hacer a través de los siguientes bloques:

OPEN nombre_cursor;
LOOP
FETCH nombre_cursor INTO variables;
EXIT WHEN nombre_cursor%NOTFOUND;
END LOOP;

 Cerrar Cursor

Una vez que se han recuperado todas las filas del cursor, hay que cerrarlo para que se
liberen de la memoria del servidor los objetos temporales creados.

Si no cerrásemos el cursor, la tabla temporal quedaría en el servidor almacenada con


el nombre dado al cursor y la siguiente vez ejecutásemos ese bloque de código, nos

5
daría la excepción CURSOR_ALREADY_OPEN (cursor ya abierto) cuando
intentásemos abrir el cursor.

Para cerrar el cursor se utiliza la siguiente sintaxis:

CLOSE numbre_cursor;
CONSIDERACIONES

 Cuando un cursor está cerrado, no se puede leer.

 Cuando leemos un cursor debemos comprobar el resultado de la lectura utilizando los


atributos de los cursores.

 Cuando se cierra el cursor, es ilegal tratar de usarlo.

 El nombre del cursor es un identificador, no una variable. Se utiliza para identificar la


consulta, por eso no se puede utilizar en expresiones.

ATRIBUTOS DE LOS CURSORES

 %FOUND: devuelve verdadero di el ultimo FETCH ha recuperado algún valor; en caso


contrario devuelve falso; si el cursor no está abierto nos devuelve error.
 %NOTFOUND: hace justamente lo contrario al anterior.
 %ROWCOUNT: nos devuelve el número de filas recuperadas hasta el momento.
 %ISOPEN: devuelve verdadero si el cursor está abierto.

EJEMPLO CURSOR IMPLICITO

Cursores implícitos: Se utilizan cuando la sentencia SELECT devuelve un solo registro y


su formato es como sigue:

DECLARE
lsalario empleados.salario%TYPE;
ldni empleados.dni%TYPE;
BEGIN
SELECT salario, dni
6
INTO lsalario, ldni
FROM empleados
WHERE nombre = 'Juan'
AND apellidos = 'Rodrigo Comas';
/* Resto de sentencias del bloque */
END;

EJEMPLO CURSOR EXPLICITO

Cursores explícitos: “Se utilizan cuando la sentencia SELECT puede devolver varios registros.
También se pueden utilizar en consultas que devuelvan un solo registro por razones de
eficiencia con respecto a los cursores implícitos, eficiencia que mejorará especialmente si el
cursor explícito se tiene que ejecutar varias veces dentro del bloque de código PL/SQL.”
Herrate P. (2012).

DECLARE
CURSOR cemp IS
SELECT salario, dni
FROM empleados;
cepm_rec cemp%ROWTYPE;
BEGIN
FOR cemp_rec IN cemp
LOOP
DBMS_OUTPUT.PUT_LINE
(cemp_rec.dni || ' ' || cemp_rec.salario);
END LOOP;
END;

7
BIBLIOGRFIA

Alcalde A. (2015). PL/SQL. Cursores. 2016, de El Baul del Programador Sitio web:
https://elbauldelprogramador.com/plsql-cursores/

Herrate P. (2012). Introducción a cursores PL/SQL. 2016, de DevJoker Sitio web:


http://www.devjoker.com/contenidos/articulos/32/Cursores-en-PLSQL.aspx

Anonimo. (2013). Tema 13: Cursores. 2016, de MundoOracle Sitio web:


http://www.mundoracle.com/cursores.html?Pg=sql_plsql_13.htm

Marco M.. (2014). Cursores en PL/SQL primera parte. 2016, de Desarrollo Web
Sitio web: http://www.desarrolloweb.com/articulos/cursores-pl-sql-I.html

S-ar putea să vă placă și