Documente Academic
Documente Profesional
Documente Cultură
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).
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.
TIPOS DE CURSORES
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:
“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).
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).
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.
5
daría la excepción CURSOR_ALREADY_OPEN (cursor ya abierto) cuando
intentásemos abrir el cursor.
CLOSE numbre_cursor;
CONSIDERACIONES
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;
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/
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