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
CURSORES
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
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
// 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>
ADMINISTRACION DE CURSORES
(CREACION, MODIFICACION,
ELIMINACION
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
-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
MODIFICACION
ELIMINACION:
CREATE Procedure DBPSRemoveTest_Sp
As
Begin
DECLARE TEST_CURSOR
CURSOR FOR
SELECT * FROM Test DECLARE @RetPeriod
intDECLARE @AuthId Varchar(50)
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
EJEMPLOS
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
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
--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
CURSORES

CURSORES

  • 1.
    AREA : BASEDE 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
  • 2.
  • 3.
    Un cursor esun 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 dela 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>
  • 6.
    ADMINISTRACION DE CURSORES (CREACION,MODIFICACION, ELIMINACION
  • 7.
    Creacion: CREAR UN CURSORQUE 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 --MANIPULARDATOS----- 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
  • 9.
  • 10.
    ELIMINACION: CREATE Procedure DBPSRemoveTest_Sp As Begin DECLARETEST_CURSOR CURSOR FOR SELECT * FROM Test DECLARE @RetPeriod intDECLARE @AuthId Varchar(50)
  • 11.
    OPEN TEST_CURSOR FETCHNEXT 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
  • 12.
  • 13.
    El siguiente ejemplomuestra 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 CURSORFOR 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 lasiguiente fila del cursor FETCH cClientes INTO@id, @Nombre, @Apellido1, @Apellido2, @NifCif, @FxNacimiento END --Cierre del cursor CLOSE cClientes --Liberar los recursos DEALLOCATE cClientes