Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/12/2012, 13:18
r0xdrig0
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 4 meses
Puntos: 0
Procedimiento almacenado no funciona

Hola amigos, les cueneto hice un procedimiento almacenado el cual deberia calcularme la cantidad de dias de vacaciones deacuerdo a los años q ue lleva el empleado en la empresa el procedimiento almacenado en si lo hice pero no me funciona.... este es mi code:

Código MySQL:
Ver original
  1. DELIMITER $$
  2. DROP PROCEDURE IF EXISTS aumenta_dias_feri $$
  3.     CREATE PROCEDURE aumenta_dias_feri ()
  4.  
  5.  
  6. DECLARE dia_ing int;
  7. DECLARE mes_ing int;
  8. DECLARE ano_ing int;
  9. DECLARE Fun_Codigo VARCHAR(11);
  10. DECLARE ano_recono int;
  11. DECLARE feriado_2 int;
  12.  
  13. DECLARE fecha_actual date;
  14. DECLARE dia_actual int;
  15. DECLARE mes_actual int;
  16. DECLARE ano_actual int;
  17. DECLARE result_dias_corresp int;
  18. DECLARE resultado_an_serv int;
  19.  
  20. -- SPLIT BEGIN DATE IN DAY MONTH YEAR
  21.  
  22.   /*SELECT DATE(CONCAT(AN_INGR, '-', MES_INGR, '-', DIA_INGR)) as fec_ingreso
  23.  into fecha_in
  24.  FROM PERIODO_INGRESO;
  25.  
  26. SELECT DAY(fecha_in) AS DIA_ING
  27.  INTO dia_ing
  28. from PERIODO_INGRESO;
  29.  
  30.  SELECT MONTH(fecha_in) AS MES_ING
  31.  INTO mes_ing
  32. from PERIODO_INGRESO;
  33.  
  34. SELECT YEAR(fecha_in) AS ANO_ING
  35. INTO ano_ing
  36. from PERIODO_INGRESO;*/
  37.  
  38. -- SPLIT CURRENT DATE IN DAY MONTH YEAR
  39.  
  40. SET fecha_actual = CURDATE();
  41.  
  42. SELECT DAY(fecha_actual) AS DIA_ACTUAL
  43.  INTO dia_actual;
  44.  
  45. SELECT MONTH(fecha_actual) AS MES_ACTUAL
  46.  INTO mes_actual;
  47.  
  48. SELECT YEAR(fecha_actual) AS ANO_ACTUAL
  49.  INTO ano_actual;
  50.  
  51. -- CALCULATE THE DIFF
  52.  
  53.  
  54. SELECT AN_INGR, MES_INGR, DIA_INGR, an_reconocidos, fer_2 INTO ano_ing, mes_ing, dia_ing, feriado_2, ano_recono
  55. FROM PERIODO_INGRESO, datos
  56.  
  57. WHERE PERIODO_INGRESO.FUN_CODIGO = datos.FUN_CODIGO;
  58.  
  59.  CASE
  60.  
  61.         WHEN dia_actual = dia_ing and mes_actual = mes_ing THEN
  62.        
  63.         SET resultado_an_serv = ano_actual - (ano_ing + an_reconocidos) ;
  64.  
  65.             IF resultado_an_serv >= 1 AND resultado_an_serv <= 14 THEN
  66.    
  67.                 SET result_dias_corresp = 15;
  68.  
  69.                 IF result_dias_corresp = feriado_2 then
  70.  
  71.                     SET feriado_2 = result_dias_corresp;
  72.  
  73.                     UPDATE datos SET fer_2 = feriado_2, feriado_corresp = result_dias_corresp WHERE Fun_Codigo= funCodigo;
  74.  
  75.                 ELSE
  76.  
  77.                 UPDATE datos SET feriado_corresp = result_dias_corresp WHERE Fun_Codigo= funCodigo;
  78.  
  79.                 END IF;
  80.  
  81.             END IF;
  82.  
  83.                 IF resultado_an_serv >= 15 AND resultado_an_serv <= 19 THEN
  84.        
  85.                     SET result_dias_corresp = 20;
  86.  
  87.                     IF result_dias_corresp = feriado_2 then
  88.  
  89.                     SET feriado_2 = result_dias_corresp;
  90.  
  91.                     UPDATE datos SET fer_2 = feriado_2, feriado_corresp = result_dias_corresp WHERE Fun_Codigo= funCodigo;
  92.  
  93.                 ELSE
  94.  
  95.                 UPDATE datos SET feriado_corresp = result_dias_corresp WHERE Fun_Codigo= funCodigo;
  96.  
  97.                     END IF;
  98.  
  99.  
  100.                 END IF;
  101.  
  102.                 IF resultado_an_serv >= 20 THEN
  103.  
  104.                 SET result_dias_corresp = 25;
  105.  
  106.                     IF result_dias_corresp = feriado_2 then
  107.  
  108.                     SET feriado_2 = result_dias_corresp;
  109.  
  110.                     UPDATE datos SET fer_2 = feriado_2, feriado_corresp = result_dias_corresp WHERE Fun_Codigo= funCodigo;
  111.  
  112.                 ELSE
  113.  
  114.                 UPDATE datos SET feriado_corresp = result_dias_corresp WHERE Fun_Codigo= funCodigo;
  115.  
  116.                     END IF;
  117.  
  118.                 END IF;
  119.  
  120.