Hola amigos, estoy intentando hacer una tarea pero no logro que me funcione el cursor que declaro... A ver si hay algún alma caritativa que me pueda ayudar.
El enunciado es el siguiente:
Crea una función que reciba como parámetro de entrada el número correspondiente a un mes y devuelva el importe total facturado ese mes. Utiliza para ello las dos funciones obtenidas en la práctica anterior. NOTAS:
• Por ejemplo, para Enero, número del mes 1.
• Utilizar un cursor para recorrer cada fila de la consulta de los IdReparacion que se obtengan en ese mes.
• Controla mediante un HANDLER que la consulta haya devuelto alguna fila.
DROP FUNCTION IF EXISTS Ejercicio7;
DELIMITER //
CREATE FUNCTION Ejercicio7(Mes INT)
RETURNS DEC(6,2)
DETERMINISTIC
BEGIN
DECLARE total DEC(6,2);
DECLARE ID INT DEFAULT 0;
DECLARE Fact_Mes CURSOR FOR
SELECT IdReparacion FROM reparaciones WHERE MONTH(FechaSalida)=Mes;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET @final = TRUE;
SET total=0;
SET ID=Mes;
OPEN Fact_Mes;
bucle:LOOP
FETCH Fact_Mes INTO ID;
IF @final THEN
LEAVE bucle;
ELSE
SELECT Ejercicio6A(ID)+Ejercicio6B(ID) INTO total;
END IF;
END LOOP bucle;
CLOSE Fact_Mes;
RETURN total;
END //
DELIMITER ;
SELECT Ejercicio7(1);
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)