1. AREA : BASE DE DATOS II
DOCENTE : ING. MARCO AURELIO PORRO CHULLI
CARRERA : INGENIERÍA DE SISTEMAS Y TELEMÁTICA
INTEGRANTES:
CRISTHIAN SERGIO KAYAP YAGKIKAT
INGRID LESLY CORONEL ACUÑA
3. Un cursor es un objeto de la Base de Datos usado por
las aplicaciones para manipular los datos fila a fila en
lugar de hacerlo en bloques de filas como lo hacen los
comandos SQL normales
4. SYSTAXIS
Declaracion del cursor
DECLARE <nombre_cursor> CURSOR
FOR
<sentencia_sql>
Apertura del cursor
OPEN <nombre_cursor>
//Lectura de la primera fila del cursor
FETCH <nombre_cursor> INTO
<lista_variables>
WHILE (@@FETCH_STATUS = 0)
BEGIN
5. // Lectura de la siguiente fila de un cursor FETCH
<nombre_cursor> INTO
<lista_variables>
END Fin del bucle WHILE
Cierra el cursor
CLOSE <nombre_cursor>
//Libera los recursos del cursor
DEALLOCATE <nombre_cursor>
7. Creacion:
CREAR UN CURSOR QUE OBTENGA LOS DATOS DE LOS PRODUCTOS
DECLARE @col1 VARCHAR(80),
DECLARE@col2 INT,
DECLARE@col3 NUMERIC(10,2)
--CREACION DEL CURSOR
DECLARE c_Producto_Basico CURSOR FOR
SELECT Descripcion, Stock, PrecioA
FROM Producto
8. -ABRIR CURSOR
OPEN c_Producto_Basico
--MANIPULAR DATOS-----
FETCH(LEER) FETCH c_Producto_Basico INTO @col1,@col2,@col3
WHILE @@FETCH_STATUS=0
BEGIN ---LTRIM(ELIMINA ESPACIOS EN BLANCO A LA IZQUIERDA)
PRINT @col1+'-'+LTRIM(str(@col2))+'- '+LTRIM(STR(@col3))
FETCH c_Producto_Basico INTO
@col1,@col2,@col3
END
-CERRAR CURSOR
CLOSE c_Producto_Basico
--DESALOJAR
DEALLOCATE c_Producto_Basico
11. OPEN TEST_CURSOR FETCH NEXT FROM TEST_CURSOR INTO
@RETPERIOD,@AUTHID
WHILE@@FETCH_STATUS=0
BEGIN
delete from test where userid=@RetPeriod and
Username=@Authid
IF(@@ROWCOUNT=0)
PRINT 'Failed to delete the row from the table END
FETCH NEXT FROM TEST_CURSOR INTO @RETPERIOD,@AUTHID END
CLOSE TEST_CURSOR DEALLOCATE TEST_CURSOR end GO
13. El siguiente ejemplo muestra el uso de un cursor.
--Declaracion de variables para el cursor
DECLARE
@Id int,
@Nombre varchar(255),
@Apellido1 varchar(255),
@Apellido2 varchar(255),
@NifCif varchar(20),
@FxNacimiento datetime
14. DECLARE cClientes CURSOR FOR
SELECT Id, Nombre, Apellido1, Apellido2, NifCif,
FxNacimiento
FROM CLIENTES
--Apertura del cursor
OPEN cClientes
--Lectura de la primera fila del cursor
FETCH cClientes INTO @id, @Nombre, @Apellido1,
@Apellido2, @NifCif, @FxNacimiento
WHILE (@@FETCH_STATUS = 0)
BEGIN
PRINT @Nombre + ' ' + @Apellido1 + ' ' + @Apellido2
15. --Lectura de la siguiente fila del cursor
FETCH cClientes INTO@id, @Nombre,
@Apellido1, @Apellido2, @NifCif, @FxNacimiento
END
--Cierre del cursor
CLOSE cClientes
--Liberar los recursos
DEALLOCATE cClientes