¡Hola Christian!
Entiendo que estás teniendo problemas con el resultado de tu procedimiento almacenado en MySQL. Parece que estás intentando sumar el límite de crédito de todos los clientes, pero el resultado que obtienes es 0, a pesar de que no hay datos nulos ni ceros en la tabla.
Una posible razón para este comportamiento es que estás inicializando la variable volumen_compra
en 0 dentro del procedimiento almacenado, pero nunca la actualizas con la suma de los límites de crédito. Te sugiero que modifiques tu procedimiento de la siguiente manera:
CREATE DEFINER=`root`@`localhost` PROCEDURE `limite_creditos`()
BEGIN
DECLARE limite_credito FLOAT;
DECLARE volumen_compra FLOAT;
DECLARE fin_cursor INT;
DECLARE c CURSOR FOR SELECT LIMITE_CREDITO FROM tb_cliente;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fin_cursor = 1;
SET fin_cursor = 0;
SET volumen_compra = 0; -- Inicializa la variable volumen_compra en 0
OPEN c;
FETCH c INTO limite_credito; -- Agrega esta línea para obtener el primer valor antes del bucle
WHILE fin_cursor = 0 DO
SET volumen_compra = volumen_compra + limite_credito; -- Actualiza volumen_compra con la suma de los límites de crédito
FETCH c INTO limite_credito; -- Obtiene el siguiente valor del cursor
END WHILE;
SELECT volumen_compra;
CLOSE c;
END
Con estos cambios, deberías obtener el resultado esperado al llamar al procedimiento limite_creditos()
. Recuerda que es importante inicializar volumen_compra
antes del bucle y actualizar su valor dentro del bucle para que refleje la suma total de los límites de crédito.
Espero que esta modificación te ayude a obtener el resultado deseado. ¡Buena suerte!
Espero haber ayudado y buenos estudios!
Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!