1
respuesta

Aporte

Gracias a las respuestas anteriores, mejore al consulta asi:

USE JUGOS_VENTAS;
DROP PROCEDURE IF EXISTS CAMPO_CONDICIONAL;
DELIMITER $$
USE JUGOS_VENTAS$$
CREATE PROCEDURE CAMPO_CONDICIONAL(MES INT, ANIO INT)
BEGIN
-- DECLARE CANTIDAD INT default 0; DECLARE PRECIO FLOAT DEFAULT 0.0;
--  Gracia a Julio Pachon
DECLARE FACTURACION DECIMAL(8,2);
DECLARE FLAG BIT(1) DEFAULT 0;
DECLARE ACCUMULATE FLOAT DEFAULT 0.0;
DECLARE CCURSOR CURSOR FOR 
    SELECT (IFa.CANTIDAD*IFa.PRECIO) FROM items_facturas IFa
    INNER JOIN facturas  F ON F.NUMERO = IFa.NUMERO
    WHERE MONTH(F.FECHA_VENTA) = MES AND YEAR(F.FECHA_VENTA) = ANIO;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET FLAG = 1;

OPEN CCURSOR;
WHILE FLAG = 0
DO
    FETCH CCURSOR INTO FACTURACION;
    IF FLAG = 0
    THEN 
        SET ACCUMULATE = ACCUMULATE + FACTURACION;
    END IF;
END WHILE;
CLOSE CCURSOR;
SELECT ACCUMULATE AS TOTAL_FACTURACION;

END$$

CALL CAMPO_CONDICIONAL(1,2017);

SELECT IFa.CANTIDAD, IFa.PRECIO FROM items_facturas IFa
INNER JOIN facturas  F ON F.NUMERO = IFa.NUMERO
WHERE MONTH(F.FECHA_VENTA) = 1 AND YEAR(F.FECHA_VENTA) = 2017;

Bueno, espero les sirva. Saludos

1 respuesta

Hola Edsel, espero que estés bien! ¡Que increible! Felicitaciones por la creatividad! Gracias por compartir tu código con nosotros. Le recomendamos que comparta su código con sus colegas en Discord, allí es posible que todos lo vean e interactúen contigo. Si tiene alguna pregunta sobre el contenido del curso, estamos aquí para ayudarlo. ¡Sigue practicando! ¡Vamos juntos! :)

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)