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.
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 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. --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:
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
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