buenas amigos, gracias por la ayuda que me puedan brindar ...
tengo un procedimiento almacenado que calcula el tiempo de uso de los activos de una tabla activos,
el problema es que cuando lo ejecuto a todos los registros me da un resultado equivocado, pero cuando lo corro a un solo registro lo hace bien, y no le encuentro donde esta el error.
cuelgo aqui el codigo a ver si alguien me puede ayudar.
Código MySQL:
Ver original DECLARE cursor1 CURSOR FOR
SELECT SECUENCIA
, PORCDEP
, VALORACTUAL
, VALORAGREGADO
, VALOR
, FECHAADQUISICION
, TOTALDEPRECIADO
FROM activos
;
OPEN cursor1;
FETCH cursor1
INTO VarSecuencia
, VarPorcentaje
, VarValorActual
, VarValorAgregado
, VarValor
, VarFechaAdq
, VarDepAcum
; SET DiaAdq
= DAY(VarFechaAdq
);
SET DiaAct
= DiaAct
+ 30; SET MesAct
= MesAct
+ 12; SET Dia
= DiaAct
- DiaAdq
; SET Mes
= MesAct
- MesAdq
; SET Ano
= AnoAct
- AnoAdq
;
SET Mensaje
= CONCAT('En el inventario, el tiempo de uso es de: ', Ano
, ' años, ', Mes
, ' mes/es y ', Dia
, ' días');
SET AnosEnDias
= Ano
* 365; SET MesesEnDias
= Mes
* 30; SET TiempoDeUso
= AnosEnDias
+ MesesEnDias
+ Dia
; UPDATE activos
SET activos.FECHAACTUAL
= VarFechaActual
, activos.TIEMPOUSO
= Mensaje
WHERE SECUENCIA
= VarSecuencia
; CLOSE cursor1;
SELECT "Activos Actualizados con Exito";
hay algunas variables que no se estan usando todavia pero que mas a delante las usare estas no intervienen en el codigo hasta ahora...
la tabla tiene un campo FECHAADQUISICION, un campo FECHAACTUAL y un campo TIEMPOUSO
si calculo el tiempo de uso a un solo registro me da este resultado:
En el inventario, el tiempo de uso es de: 2 años, 9 mes/es y 14 días
la fehca de adquisicion es 2011-01-03
las fecha actual es 2013-10-17
este resultado es correcto
pero si calculo a todos me da este resultado:
En el inventario, el tiempo de uso es de: 2 años, 8 mes/es y 44 días
gracias por la ayuda...