quisiera ayuda con el procedimiento que intento implementar, la idea, que consulte los contratos que terminan y que lo seleccione y reste los comerciales.
me gustaria saber porq no funciona o si se puede mejora.
Código PHP:
DELIMITER $$
DROP PROCEDURE IF EXISTS `db`.`nombre` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `nombre`()
BEGIN
/*declaro variables*/
DECLARE MAXI INTEGER;
DECLARE COR INTEGER DEFAULT 1;
DECLARE FH DATE;
DECLARE SEN varchar(20);
DECLARE PROG varchar(40);
DECLARE STOCK varchar(9);
DECLARE A1, A2, A3, A1C, A2C, A3C INTEGER DEFAULT 0;
/*saco la cantidad de registros en la tabla X*/
SET MAXI = (SELECT MAX(idX) FROM X);
WHILE COR <= MAXI DO
/*selecciono las datos de la tabla X y las ingreso en variables con un select into */
SELECT senal, programa, stock, f_hasta, idavi1, idavi2, idavi3
INTO SEN, PROG, STOCK, FH, A1, A2, A3
FROM X
WHERE idX=COR;
/*selecciono y las ingreso en las varibles de la tabla Z*/
SELECT A30c, A30g, A10
INTO A1C, A2C, A3C
FROM Z
WHERE senal=SEN AND programa=PROG;
/*Consulto si la fecha de fin de contrato es menor a la fecha de hoy
y si su stock es vendido*/
IF (FH < CURDATE() AND STOCK = 'Vendido') THEN
/*actualizo la tabla Z y resto los comerciales */
UPDATE bloqueos
SET A30c= A30c - A1, A30g = A30g - A2, A10 = A10 - A3
WHERE senal=SEN AND programa=PROG;
/*actualizo la tabla X su estado a terminado de la tabla X*/
UPDATE X
SET stock='Terminado'
WHERE idX=COR;
END IF;
SET COR = COR + 1;
END WHILE;
END $$
DELIMITER ;