Upload
alexramirezlazaro
View
215
Download
0
Embed Size (px)
Citation preview
8/18/2019 15. CURSORES
1/4
CURSORES
Los cursores son una herramienta de SQL que nos permite recorrer el
resultado de una consulta SQL y realizar operaciones en cada paso de ésta.
Un cursor es una variable que nos permite recorrer con un conjunto de
resultados obtenido a través de una sentencia SELECT fila a fila.
Se compone de las siguientes partes:
• Conjunto de resultados del cursor: el conjunto (tabla) de filas que
resulta de ejecutar una consulta asociada al cursor.
• Posición del cursor: un puntero en una fila dentro del conjunto de
resultados del cursor.
Cuando trabajemos con cursores debemos seguir los siguientes pasos:
• Declarar el cursor, utilizandoDECLARE
• Abrir el cursor, utilizandoOPEN
• Leer los datos del cursor, utilizandoFETCH ... INTO
•
Cerrar el cursor, utilizandoCLOSE
• Liberar el cursor, utilizandoDEALLOCATE
SISTAXIS DE LOS CURSORES
La sintaxis general de los cursores es la siguiente:
-- Declaración del cursor
Declaramos un cursor. Se especifica las filas y columnas que se van a
recuperar
DECLARE CURSOR
FOR
-- Apertura del cursor
Ing. Ana Doris M. Barrera Loza
8/18/2019 15. CURSORES
2/4
OPEN
Este código sirve para abrir o activar un cursor. Al abrir el cursor se evalúa la
consulta que aparece en su definición, utilizando los valores actuales decualquier parámetro referenciado en la consulta, para producir una colección
de filas. El puntero se posiciona delante de la primera fila de datos (registro
actual), esta sentencia no recupera ninguna fila.
-- Lectura de la primera fila del cursor
FETCH INTO
WHILE (@@FETCH_STATUS = !
BEGIN
-- Lectura de la siguiente fila de un cursor
FETCH INTO
"""
END -- Fin del bucle WHILE
Una vez abierto el cursor se utiliza la cláusula FETCH para recuperar las filas
del cursor.
Lista - variables son las variables que van a contener los datos recuperados de
la fila del cursor, en la definición deben ir separadas por comas. En la lista de
variables se deben definir tantas variables como columnas tenga la fila a
recuperar.
-- Cerrar el cursor
Para cerrar un cursor se utiliza el comando CLOSE, este comando hace
desaparecer el puntero sobre el registro actual
CLOSE
Ing. Ana Doris M. Barrera Loza
8/18/2019 15. CURSORES
3/4
-- Liberar los recursos del cursor (lo sacamos de la memoria)
DEALLOCATE
Por ejemplo:
Crear un cursor
#EC$A%E Em&lo'ee_Cursor CU%S% F% SE$ECT $ast)ame* First)ame* Cit'
F%+ Em&lo'ees,HE%E $ast)ame lie ./C-012.
Abrir un cursor sin variables y recorrerlo
3E) Em&lo'ee_Cursor
FETCH )E4T F%+ Em&lo'ee_Cursor,H5$E @@FETCH_STATUS = 6E75) FETCH )E4T F%+ Em&lo'ee_CursorE)#
C$SE Em&lo'ee_Cursor
#EA$$CATE Em&lo'ee_Cursor
Recorrer un cursor guardando los valores en variables
#EC$A%E @com&_name nvarc8ar(9! #EC$A%E @cont_name nvarc8ar(:!
#EC$A%E cursor_cliente CU%S% F% SE$ECT com&an'name* contactname
F%+ customers,HE%E com&an'name $5;E .C2.
%#E% 6 com&an'name* contactname
3E) cursor_clienteFETCH )E4T F%+ cursor_cliente
5)T @com&_name* @cont_name,H5$E @@FETCH_STATUS =
6E75) 3%5)T .Cliente . @com&_name .* . @cont_nameFETCH )E4T F%+ cursor_cliente5)T @com&_name* @cont_nameE)#
C$SE cursor_cliente
#EA$$CATE cursor_cliente
Ing. Ana Doris M. Barrera Loza
8/18/2019 15. CURSORES
4/4
Ing. Ana Doris M. Barrera Loza