Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Procedimiento almacenado no funciona

Estas en el tema de Procedimiento almacenado no funciona en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 10/12/2012, 13:18
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 3 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.  
  #2 (permalink)  
Antiguo 10/12/2012, 13:49
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Procedimiento almacenado no funciona

a continuacion les detallo el SP:

en este SP participan dos tablas, la tabla datos, que es donde tengo el id xdel funcionario, el feriado q son los dias de vacaciones q le restan en el presente año y feriado corresponde q es el total de dis de vacaciones que le corresponden al empleado deacuerdo a los años que lleva trabajando en la empresa:

la tabla datos seria asi

|id(correlativo)||fer_2||Fun_Codigo|| feriado_corresponde

y la tabla Periodo_Ingresos es asi:

||cod_funcionario(id del empleado)||an_ingr(año ingreso)||mes_ingr||dia_ingr

esta tabla es la q contiene la fecha en la q el empleado entro a la empresa


y lo q tengo q hacer es:

si el mes y dia de ingreso del empleado coinciden con el mes y dia actual que se reste la fecha de ingreso a la fecha actual y si el resultado
esta entre 1 año a 14 años de antiguadad en la empresa le corresponden 15 dias de vacaciones al empleado y si tiene de 14 a 19 años de antiguadad le corresponden 20 dias de vacaciones y etc... y voy aqctualizando el campo feriado_corresponde con los dias de vacaciones totales q le corresponden al empleado deacuerdo al total de años q lleva trabajando en la empresa.... como ven el procedimiento almacenado lo tengo hecho pero no me esta funcionando :S es por eso q lo posteo aca amigos para q uds me guien y en este caso me digan como debo trabajar con ambas tablas mencionadas dentro de mi SP, ya q no se cual es la forma correcta de comparar el dia y el mes de las fecha de ingreso con los de la fecha actual, amigos agradeceria mucho su ayuda... quedo atento a sus respuestas de antemano gracias bye...
  #3 (permalink)  
Antiguo 11/12/2012, 05:46
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Procedimiento almacenado no funciona

porfavor amigos alguien me puede guiar con este SP?? estoy tratando de hacerlo funcinar pero no lo logro, porfavor alguien q me pueda guiar diciendome que tengo q cambiar para q este SP me funcione como lo necesito please!!! me tiene contra el tiempo esto y no logro dar cola solucion porfavor si alguien me guia estaria muy agradecido!!!! quedo atento a alguna contestacion... de antemano muchas gracias!!!!!!!
  #4 (permalink)  
Antiguo 11/12/2012, 15:07
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Procedimiento almacenado no funciona

Amigos porfavor no he podido dar con la solucion he buscado por todos lados y nada que me aclare el panorama, ya que en mi SP necesito q hace haga todo dentro de MySQL sin codigo de algun lenguaje de programacion, pero no he podido dar con la solucion correcta, y al ejecutar mi SP no me manda error ni nada pero tampoco me hace lo q deberia hacer, es por eso q agradeceria mucho su ayuda a alguie q me guie como arreglar mi SP para q haga lo q deseo sin ningun parametro de entrada, como puedo lograr esto haciedo q qmi SP haga todo e MySQL?? agradeceria mucho su guia amigos ya q aun no he podido solucionar este problema es por eso q recurro a uds para q puedan guiarme y aclararme un poco la pelicula, muchas gracias desde ya bye...

Etiquetas: procedimiento, select, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:15.