Integrantes:
Altamirano Guevara Yoseily
Herrera Cieza Erlin Darwin
Docente : Marco Aurelio Porro Chulli
INGENIERÍA DE SISTEMAS Y TELEMÁTICA
ASIGNATURA: BASE DE DATOS II
Tema 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.
Definición:
Declaración 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
Sintaxis:
// 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>
Administración de Cursores
(Creación, Modificación,
Eliminación)
--CREAR UN CURSOR QUE OBTENGA LOS DATOS
DE LOS PRODUCTOS
DECLARE @col1 VARCHAR(80), @col2 INT,
@col3 NUMERIC(10,2)
--CREACION DEL CURSOR
DECLARE c_Producto_Basico CURSOR FOR
SELECT Descripcion, Stock, PrecioA
FROM Producto
Creación:
--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
Modificación:
Eliminación:
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
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
5 cursores

5 cursores

  • 1.
    Integrantes: Altamirano Guevara Yoseily HerreraCieza Erlin Darwin Docente : Marco Aurelio Porro Chulli INGENIERÍA DE SISTEMAS Y TELEMÁTICA ASIGNATURA: BASE DE DATOS II Tema CURSORES
  • 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. Definición:
  • 4.
    Declaración 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 Sintaxis:
  • 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.
    Administración de Cursores (Creación,Modificación, Eliminación)
  • 7.
    --CREAR UN CURSORQUE OBTENGA LOS DATOS DE LOS PRODUCTOS DECLARE @col1 VARCHAR(80), @col2 INT, @col3 NUMERIC(10,2) --CREACION DEL CURSOR DECLARE c_Producto_Basico CURSOR FOR SELECT Descripcion, Stock, PrecioA FROM Producto Creación:
  • 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.
    Eliminación: 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 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