Ver Mensaje Individual
  #8 (permalink)  
Antiguo 04/09/2012, 05:54
r0xdrig0
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Compo Finalizo este stored procedure con CASE Y WHEN???

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 feriado1feriado2resultado_fer1resultado_fer2resultado_intermedio INT;
        
SET feriado1=0;
     
        
SELECT fer_1fer_2 INTO feriado1feriado2 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_CodigofunCodigo;
            
#feriado1 igual q dias pedidos
            
WHEN feriado1 diasPedidos THEN
                SET resultado_fer1
feriado1 diasPedidos;
                
UPDATE datos SET fer_1 resultado_fer1 WHERE Fun_CodigofunCodigo;
            
#feriado1 menor q dias pedidos
            
WHEN feriado1<diasPedidos THEN
                SET resultado_fer1 
diasPedidosferiado1 ;
                
SET resultado_intermedio feriado2 resultado_fer1;
                
UPDATE datos SET fer_1 0 WHERE Fun_CodigofunCodigo;
                
UPDATE datos SET fer_2 resultado_intermedio WHERE Fun_CodigofunCodigo;
            
#feriado2 mayor q dias pedidos
            
WHEN feriado1 AND feriado2diasPedidos THEN
                SET resultado_fer2 
feriado2 diasPedidos;
                
UPDATE datos SET fer_2 resultado_fer2 WHERE Fun_CodigofunCodigo;
            
#feriado2 igual q dias pedidos
            
WHEN feriado2 diasPedidos THEN
                SET resultado_fer2 
feriado2 diasPedidos;
                
UPDATE datos SET fer_2 resultado_fer2 WHERE Fun_CodigofunCodigo;
            
            
#Esta es la parte del when q no me esta tomando...
            
WHEN resultado_fer2 0 THEN
                UPDATE datos SET fer_2 
0 WHERE Fun_CodigofunCodigo;
        
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!!