Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Medidas de protección al SP campo_adicional

DELIMITER //

CREATE PROCEDURE campo_adicional(IN mes INT, IN anio INT) BEGIN DECLARE cantidad INT; DECLARE precio DECIMAL(10, 2); DECLARE total_facturacion DECIMAL(10, 2) DEFAULT 0; DECLARE done INT DEFAULT 0; DECLARE error_msg VARCHAR(100);

-- Validar el rango de los parámetros de entrada
IF mes < 1 OR mes > 12 THEN
    SET error_msg = 'El mes debe estar en el rango de 1 a 12.';
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = error_msg;
END IF;

IF anio < 1920 OR anio > 2025 THEN
    SET error_msg = 'El año debe estar en el rango de 1920 a 2025.';
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = error_msg;
END IF;

-- Declarar el cursor
DECLARE cursor_facturas 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;

-- Declarar el manejador de fin del cursor
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

-- Abrir el cursor
OPEN cursor_facturas;

-- Bucle para recorrer cada fila del cursor
read_loop: LOOP
    FETCH cursor_facturas INTO cantidad, precio;
    IF done THEN
        LEAVE read_loop;
    END IF;
    -- Sumar el valor de facturación en cada factura
    SET total_facturacion = total_facturacion + (cantidad * precio);
END LOOP;

-- Cerrar el cursor
CLOSE cursor_facturas;

-- Mostrar el valor total de la facturación
SELECT total_facturacion AS 'Total de Facturación';

END;

//

DELIMITER ;

Explicación:

1. Validación del Rango de los Parámetros de Entrada:

1.1. Mes: Se valida que el mes esté en el rango de 1 a 12. Si no, se establece un mensaje de error y se lanza una señal SQL para interrumpir la ejecución.

1.2. Año: Se valida que el año esté en el rango de 1920 a 2025. Si no, se establece un mensaje de error y se lanza una señal SQL para interrumpir la ejecución.

**2. El Procedimiento Restante:

2.1. Declaración del cursor y el manejador de fin del cursor.

2.2. Apertura del cursor y bucle para recorrer cada fila del cursor.

2.3. Suma del valor de facturación en cada factura al total.

2.4. Cierre del cursor.

2.5. Muestra del valor total de la facturación.

1 respuesta

Hola, Javier ,

Gracias por compartir tu código con nosotros. Recuerda que estamos aquí para ayudarte. Si necesitas ayuda, no dudes en buscarnos en el foro.

¡Gracias nuevamente!

Saludos,

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