Docente :Ing. Marco Aurelio Porro Chulli
Asignatura :Base de Datos II.
Ciclo : VIII “A”
Integrantes:
• Yenny Isabel Cuello Morón.
• Yanina Bustamante Jibaja.
CURSORES
Es un elemento que representará a un conjunto de datos
determinado por una consulta T-SQL, el cursor permitirá
recorrer fila a fila, leer y eventualmente modificar dicho
conjunto de resultados.
SINTAXIS
DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR
FOR select_statement
[ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ]
[;]
Transact-SQL Extended Syntax
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]
[;]
VENTAJAS
Uso reducido
de la red
entre clientes
y servidores:
Mejora en la
seguridad
Mejora de las
posibilidades
de hardware
y software:
Seguridad,
administración
y
mantenimiento
centralizados
para las rutinas
comunes
Reducción en
el coste de
desarrollo y
aumento en
la fiabilidad:
Tipos
Definidos
por el
usuario
Temporale
s
Sistema
Sistema
CREACIÓN DE CURSORES
La sintaxis de declaración de un cursor es la siguiente :
declare cursor prueba _ cursor for
select nombres apellidos, from persona
ahora declaramos las variables con las que vamos a recorrer el cursor
declare @ nombres varchar(25)
declare @ apellidos varchar(25)
Abrimos el cursor para iniciar el recorrido del mismo
open cursor_ prueba
Se mueve al siguiente registro dentro del cursor y los asignamos a las variables antes declaradas
fetch next from cursor_ prueba
into @ , nombres apellidos
Retorna el estatus del último registro recorrido en el cursor cuando es igual a encontró registros
pendientes de recorrer
while @@ _ fetch status = 0
begin
print' : ' El Nombre de la persona es + @ + nombres ' : ' y sus apellidos + apellidos
Se mueve al siguiente registro dentro del cursor
fetch next from cursor_ prueba
into @ , nombres apellidos
end
Cuando concluimos con el recorrido del cursor este debe ser cerrado y luego destruido mediante las
siguientes sentencias
cose cursor_ prueba
Deallocate cursor_ prueba
MODIFICACIÓN DE CURSORES
Sintaxis simplificada
update table_name
set column1 = { expression | select_statement }
[, column2 = { expression | select_statement } ...]
where current of cursor_name
Ejemplo
update titles
set title = "The Executive’s Database Guide"
where current of biz_book
ELIMINACIÓN DE CURSORES
Sintaxis simplificada
delete [ from ] table_name where current of
cursor_name
Ejemplo
delete from titles
where current of biz_book
EJEMPLO
Crear un cursor que permita visualizar los registros de la tablaTbCliente
DECLARE @col1 char(8),@col2Varchar(40),@col3Varchar(40)
DECLARE c_Clientes CURSOR FOR
SELECT codcliente,nombre,direccion FROMTbCliente
--Apertura del cursor
OPEN c_Clientes
FETCH c_Clientes INTO @col1,@col2,@col3
WHILE (@@FETCH_STATUS = 0 )
BEGIN
PRINT @col1 + ' | ' +@col2 + ' | ' + @col3
-- Lectura de la siguiente fila del cursor
FETCH c_Clientes INTO @col1,@col2,@col3
END
-- Cierre del cursor
CLOSE c_Clientes
-- Liberar los recursos
DEALLOCATE c_Clientes
Conclusiones
Usar cursores nos puede simplificar mucho la tarea de programar un
script en otro lenguaje de programación para acabar haciendo lo
mismo que con un cursor programador directamente sobre T-SQL,
que además se ejecutará más rápido.
Los cursores son muy útiles sobre todo cuando no podemos tener
todas las columnas que necesitamos en un solo SELECT. Si podemos
tener a todas las columnas en un solo SELECT puede ser más práctico
usar el comando SELECT … INTO.

Cursores

  • 1.
    Docente :Ing. MarcoAurelio Porro Chulli Asignatura :Base de Datos II. Ciclo : VIII “A” Integrantes: • Yenny Isabel Cuello Morón. • Yanina Bustamante Jibaja.
  • 2.
    CURSORES Es un elementoque representará a un conjunto de datos determinado por una consulta T-SQL, el cursor permitirá recorrer fila a fila, leer y eventualmente modificar dicho conjunto de resultados.
  • 3.
    SINTAXIS DECLARE cursor_name [INSENSITIVE ] [ SCROLL ] CURSOR FOR select_statement [ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ] [;] Transact-SQL Extended Syntax DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [ ,...n ] ] ] [;]
  • 4.
    VENTAJAS Uso reducido de lared entre clientes y servidores: Mejora en la seguridad Mejora de las posibilidades de hardware y software: Seguridad, administración y mantenimiento centralizados para las rutinas comunes Reducción en el coste de desarrollo y aumento en la fiabilidad:
  • 5.
  • 6.
    CREACIÓN DE CURSORES Lasintaxis de declaración de un cursor es la siguiente : declare cursor prueba _ cursor for select nombres apellidos, from persona ahora declaramos las variables con las que vamos a recorrer el cursor declare @ nombres varchar(25) declare @ apellidos varchar(25) Abrimos el cursor para iniciar el recorrido del mismo open cursor_ prueba Se mueve al siguiente registro dentro del cursor y los asignamos a las variables antes declaradas fetch next from cursor_ prueba into @ , nombres apellidos Retorna el estatus del último registro recorrido en el cursor cuando es igual a encontró registros pendientes de recorrer while @@ _ fetch status = 0 begin print' : ' El Nombre de la persona es + @ + nombres ' : ' y sus apellidos + apellidos Se mueve al siguiente registro dentro del cursor fetch next from cursor_ prueba into @ , nombres apellidos end Cuando concluimos con el recorrido del cursor este debe ser cerrado y luego destruido mediante las siguientes sentencias cose cursor_ prueba Deallocate cursor_ prueba
  • 7.
    MODIFICACIÓN DE CURSORES Sintaxissimplificada update table_name set column1 = { expression | select_statement } [, column2 = { expression | select_statement } ...] where current of cursor_name Ejemplo update titles set title = "The Executive’s Database Guide" where current of biz_book ELIMINACIÓN DE CURSORES Sintaxis simplificada delete [ from ] table_name where current of cursor_name Ejemplo delete from titles where current of biz_book
  • 8.
    EJEMPLO Crear un cursorque permita visualizar los registros de la tablaTbCliente DECLARE @col1 char(8),@col2Varchar(40),@col3Varchar(40) DECLARE c_Clientes CURSOR FOR SELECT codcliente,nombre,direccion FROMTbCliente --Apertura del cursor OPEN c_Clientes FETCH c_Clientes INTO @col1,@col2,@col3 WHILE (@@FETCH_STATUS = 0 ) BEGIN PRINT @col1 + ' | ' +@col2 + ' | ' + @col3 -- Lectura de la siguiente fila del cursor FETCH c_Clientes INTO @col1,@col2,@col3 END -- Cierre del cursor CLOSE c_Clientes -- Liberar los recursos DEALLOCATE c_Clientes
  • 9.
    Conclusiones Usar cursores nospuede simplificar mucho la tarea de programar un script en otro lenguaje de programación para acabar haciendo lo mismo que con un cursor programador directamente sobre T-SQL, que además se ejecutará más rápido. Los cursores son muy útiles sobre todo cuando no podemos tener todas las columnas que necesitamos en un solo SELECT. Si podemos tener a todas las columnas en un solo SELECT puede ser más práctico usar el comando SELECT … INTO.