Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Descripción: realice un ejercicio de cursor en SQL server usando la base de datos ComputerDB
--CODIGO
USE ComputerDB;
---1) REPORETE
DECLARE @anio VARCHAR(50); set @anio = (SELECT '2021');
-- CONSULTA
SELECT YEAR(s.fecha)[anio], DATENAME(MONTH, s.fecha) [mes],
c.nombreColor, sum(sd.precio * sd.cantidad )[ventas], sum(sd.costo)[costos],
SUM((sd.cantidad * sd.precio) / 9.3) [utilidad],
sum(sd.cantidad)[productosVendidos], count(sd.idProducto)[recuento]
FROM Salida s, SalidaDetalle sd, productos p,Color c
WHERE s.idSalida = sd.idSalidaDetalle AND YEAR(s.fecha) = @anio
GROUP BY DATENAME(MONTH, s.fecha) , c.nombreColor, YEAR(s.fecha)
OPEN currsorEjemplo
FETCH NEXT FROM currsorEjemplo
INTO @anio, @mes, @color, @ventas, @costos,
@utilidad,@productosVendidos,@recuento
WHILE @@fetch_status = 0
BEGIN
CLOSE currsorEjemplo
DEALLOCATE currsorEjemplo
-- 3) IMPLEMENTACION DE TVP
CREATE PROCEDURE ventas
AS
BEGIN
SET NOCOUNT ON
-- 2) cursor
DECLARE @anioBusqueda2 VARCHAR(50), @anio VARCHAR(50), @mes
VARCHAR(50), @color varchar(50), @costos DECIMAL(18,2), @ventas DECIMAL(18,2),
@utilidad DECIMAL(18,2), @productosVendidos DECIMAL(18,2), @recuento DECIMAL(18,2)
DECLARE @resultado TABLE(anio varchar(50), mes VARCHAR(50),
color VARCHAR(50), ventas DECIMAL(18,2), costos DECIMAL(18,2), utilidad
DECIMAL(18,2),productosVendidos DECIMAL(18,2),recuento DECIMAL(18,2) )
set @anioBusqueda2 = (SELECT '2021');
DECLARE currsorEjemplo CURSOR FOR
OPEN currsorEjemplo
FETCH NEXT FROM currsorEjemplo
INTO @anio, @mes, @color, @ventas, @costos,
@utilidad,@productosVendidos,@recuento
WHILE @@fetch_status = 0
BEGIN
CLOSE currsorEjemplo
DEALLOCATE currsorEjemplo
END
EXEC ventas
-- 5 TRANSACCIONES
ALTER PROCEDURE reporteDeVenta
AS
BEGIN
SET NOCOUNT ON
-- implemetancion del cursor
DECLARE @anioBusqueda2 VARCHAR(50), @anio VARCHAR(50), @mes VARCHAR(50), @color
varchar(50), @costos DECIMAL(18,2), @ventas DECIMAL(18,2), @utilidad DECIMAL(18,2),
@productosVendidos DECIMAL(18,2), @recuento DECIMAL(18,2)
DECLARE @resultado TABLE(anio varchar(50), mes VARCHAR(50), color VARCHAR(50),
ventas DECIMAL(18,2), costos DECIMAL(18,2), utilidad
DECIMAL(18,2),productosVendidos DECIMAL(18,2),recuento DECIMAL(18,2) )
set @anioBusqueda2 = (SELECT '2021');
DECLARE currsorEjemplo CURSOR FOR
SELECT YEAR(s.fecha)[anio], DATENAME(MONTH, s.fecha) [mes], c.nombreColor,
sum(sd.precio * sd.cantidad )[ventas], sum(sd.costo)[costos], SUM((sd.cantidad *
sd.precio) / 9.3) [utilidad],
sum(sd.cantidad)[productosVendidos], count(sd.idProducto)[recuento]
FROM Salida s, SalidaDetalle sd, productos p,Color c
WHERE s.idSalida = sd.idSalidaDetalle AND YEAR(s.fecha) = @anioBusqueda2
GROUP BY DATENAME(MONTH, s.fecha) , c.nombreColor, YEAR(s.fecha)
COMMIT TRAN consulta
OPEN currsorEjemplo
FETCH NEXT FROM currsorEjemplo
INTO @anio, @mes, @color, @ventas, @costos, @utilidad,@productosVendidos,@recuento
WHILE @@fetch_status = 0
BEGIN
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO @resultado
SELECT @anio [anio], @mes [mes], @color[color], @ventas [venta],
@costos [costo], @utilidad [utilidad], @productosVendidos [productosVendidos],
@recuento [recuento]
commit transaction;
END TRY
BEGIN CATCH
rollback transaction;
END CATCH;
FETCH NEXT FROM currsorEjemplo
INTO @anio, @mes,@color, @ventas, @costos, @utilidad, @productosVendidos,@recuento
END
CLOSE currsorEjemplo
DEALLOCATE currsorEjemplo
END
Entregable: redacte un documento de Word con los enunciados y respuestas, suba el documento
a GoogleDrive dela cuenta de la Universidad Mariano Gálvez, posteriormente genere el link del
archivo a través de la opción compartir, y como respuesta de la tarea suba el link del archivo.
Nota: utilice los recursos de laboratorio para la actividad.