Muchas gracias estimado gnzsoloyo lo implemente y en cuanto a la sintaxis funciona bien, pero sabes aprovecho de hacerte una consulta, ya q te explico mi procedure hace lo siguiente:
lo q haces es ir descontando los dias de feriados pedidos por el usuario, pasa q el usuario/trabajador puede acumular vacaciones de los dos ultimos años (el anterior y el presente) si el trabajador tiene feriados pendiente del año pasado entonces los dias de feriados q pida se les descontaran de los dias disponibles de feriado del año anterior, si los dias de feriados pedidos son mayor a la cantidad de dias q dispone del año anterior entonces los feriados del año anterior quedan en cero y se le descuentan los años q tenga disponible de feriado del año en curso, la cosa es q logro hacer estos descuentos (restar feriados del año anterior hasta q queden en cero seguir descontando los dias feriados del año presente), pero mi problema se presenta ahi, cuando el feriado del año presente queda en cero si sigo pidiendo feriados el feriado del año presente si esta en cero y le sigo pidiendo va dandome numeros negativos, este es mi problema, porfavor te pegare el codigo de mi procedure q hace esto
Código PHP:
DELIMITER $$
DROP PROCEDURE IF EXISTS descontar_feriados $$
CREATE PROCEDURE descontar_feriados (funCodigo VARCHAR (11), diasPedidos INT)
BEGIN
DECLARE feriado1, feriado2, resultado_fer1, resultado_fer2, resultado_intermedio INT;
SET feriado1=0;
SELECT fer_1, fer_2 INTO feriado1, feriado2 FROM datos WHERE Fun_Codigo = funCodigo;
CASE
#feriado1 mayor q dias pedidos
WHEN feriado1>diasPedidos THEN
SET resultado_fer1= feriado1 - diasPedidos;
UPDATE datos SET fer_1 = resultado_fer1 WHERE Fun_Codigo= funCodigo;
#feriado1 igual q dias pedidos
WHEN feriado1 = diasPedidos THEN
SET resultado_fer1= feriado1 - diasPedidos;
UPDATE datos SET fer_1 = resultado_fer1 WHERE Fun_Codigo= funCodigo;
#feriado1 menor q dias pedidos
WHEN feriado1<diasPedidos THEN
SET resultado_fer1 = diasPedidos- feriado1 ;
SET resultado_intermedio = feriado2 - resultado_fer1;
UPDATE datos SET fer_1 = 0 WHERE Fun_Codigo= funCodigo;
UPDATE datos SET fer_2 = resultado_intermedio WHERE Fun_Codigo= funCodigo;
#feriado2 mayor q dias pedidos
WHEN feriado1 = 0 AND feriado2> diasPedidos THEN
SET resultado_fer2 = feriado2 - diasPedidos;
UPDATE datos SET fer_2 = resultado_fer2 WHERE Fun_Codigo= funCodigo;
#feriado2 igual q dias pedidos
WHEN feriado2 = diasPedidos THEN
SET resultado_fer2 = feriado2 - diasPedidos;
UPDATE datos SET fer_2 = resultado_fer2 WHERE Fun_Codigo= funCodigo;
#Esta es la parte del when q no me esta tomando...
WHEN resultado_fer2 < 0 THEN
UPDATE datos SET fer_2 = 0 WHERE Fun_Codigo= funCodigo;
END CASE;
END
donde mi tabla tiene esta estructura (dondde fer_1 son los dias disponibles de feriado del año anterior y fer_2 del presente año)
cod_trabajador| fer_1 | fer_2
desde ya muy agradecido, quedo atento a las contestaciones slds!!