MySQL - error 1054 - Unknown column 'Y' in 'field list'

   
Vista:

error 1054 - Unknown column 'Y' in 'field list'

Publicado por manoat (16 intervenciones) el 05/10/2013 23:10:57
Buenas...
estoy intentando hacer un procedimiento almacenado para calcular el valor de un campo llamado TIEMPOUSO en los registros de una tabla llamada activos.. ademas de este valor calculo otras cosas pero he querido probar el codigo como va hasta el calculo del campo TIEMPOUSO...
el caso es que cuando intento actualizar los valores de la tabla me da este error.
1054 - Unknown column 'Y' in 'field list'

este es el codigo:

BEGIN
DECLARE bContinuar BOOLEAN DEFAULT true;
DECLARE VarSecuencia VARCHAR(50);
DECLARE Mensaje VARCHAR(100);
DECLARE VarValorActual DOUBLE(15,0);
DECLARE VarPorcentaje DOUBLE(15,0);
DECLARE VarValorAgregado DOUBLE(15,0);
DECLARE VarValor DOUBLE(15,0);
DECLARE VarDepAcum DOUBLE(15,0);
DECLARE VarFechaActual DATE;
DECLARE VarFechaAdq DATE;
DECLARE AnoAct INT;
DECLARE MesAct INT;
DECLARE DiaAct INT;
DECLARE Dia INT;
DECLARE Mes INT;
DECLARE Ano INT;
DECLARE AnoAdq INT;
DECLARE MesAdq INT;
DECLARE DiaAdq INT;
DECLARE cursor1 CURSOR FOR SELECT SECUENCIA, PORCDEP, VALORACTUAL, VALORAGREGADO, VALOR, FECHAADQUISICION, TOTALDEPRECIADO FROM activos;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET bContinuar = false;
SET VarFechaActual = DATE(Y-m-d);
SET AnoAct = YEAR(NOW());
SET MesAct = MONTH (NOW());
SET DiaAct = DAY(NOW());

OPEN cursor1;
REPEAT
FETCH cursor1 INTO VarSecuencia, VarPorcentaje, VarValorActual, VarValorAgregado, VarValor, VarFechaAdq, VarDepAcum;
IF bContinuar THEN
SET AnoAdq = YEAR(VarFechaAdq);
SET MesAdq = MONTH (VarFechaAdq);
SET DiaAdq = DAY(VarFechaAdq);

IF DiaAct < DiaAdq THEN
SET AnoAct = AnoAct - 1;
SET DiaAct = DiaAct + 30;
END IF;
IF MesAct < MesAdq THEN
SET MesAct = MesAct - 1;
SET MesAct = MesAct + 12;
END IF;
SET Dia = DiaAct - DiaAdq;
SET Mes = MesAct - MesAdq;
SET Ano = AnoAct - AnoAdq;
SET Mensaje = "En el inventario, El tiempo de uso es de: "|| Ano || Mes || Dia;

UPDATE prueba_procedure SET TIEMPOUSO = 'Mensaje' WHERE activos.SECUENCIA = VarSecuencia;
END IF;
UNTIL NOT bContinuar END REPEAT;
CLOSE cursor1;
SELECT 'Los datos se cargaron correctamente';
END

ayuda por favor ...
GRACIAS..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Willian

error 1054 - Unknown column

Publicado por Willian (51 intervenciones) el 06/10/2013 15:38:17
Hola manoat verifica la tabla prueba_procedure si no tenes algun trigger que dispara a lo mejor es ese tu problema es el trigger puede estar actualizando otra tabla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error 1054 - Unknown column

Publicado por manoat (16 intervenciones) el 06/10/2013 17:37:35
perdona William mi corta comprencion pero no entiendo lo que me planteas.. no existe otro triger mas en la base de datos solo este prueba_procedure es una tabla de prueba con tres campos ID, SECUENCIA , y TIEMPOUSO, la cree para probar el procedimiento se supone debo calcular el tiempo de uso a partir de la fecha de adquisicion contra la fecha de hoy y grabar en esa tabla la secuencia que es un numero de maximo 6 digitos el id que es autonumerico y el tiempo de uso .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willian

error 1054 - Unknown column

Publicado por Willian (51 intervenciones) el 06/10/2013 17:41:07
Comenta esta línea entonces /*SET VarFechaActual = DATE(Y-m-d);*/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error 1054 - Unknown column

Publicado por manoat (16 intervenciones) el 06/10/2013 17:57:03
he corregido la instruccion :
SET VarFechaActual = DATE(Y-m-d);
SET AnoAct = YEAR(NOW());
SET MesAct = MONTH (NOW());
SET DiaAct = DAY(NOW());

por:

SET VarFechaActual = CURDATE();
SET AnoAct = YEAR(CURDATE());
SET MesAct = MONTH (CURDATE());
SET DiaAct = DAY(CURDATE());

y el error se fue pero ahora me sale esto en el campo TIEMPOUSO:
En el inventario, El tiempo de uso es de 1535

deberia salirme

En el inventario, El tiempo de uso es de 13 años, 2 mese y 15 dias como ejemplo me puedes ayudar diciendome como concatenar eso en esta variable

Mensaje
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willian

error 1054 - Unknown column

Publicado por Willian (51 intervenciones) el 06/10/2013 18:17:10
Para unir varias palabras debes usar concat('palabra1','palabra2',v_variable1,etc) siempre dividiendo entre comas ',' . Recuerde si es una palabra fija entre comillas simples.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error 1054 - Unknown column

Publicado por manoat (16 intervenciones) el 06/10/2013 19:11:26
william hice esto siguiendo tu consejo
SET Mensaje = CONCAT('En el inventario, El tiempo de uso es de: ', Ano , Mes , Dia);

pero me devuelve esto:
En el inventario, El tiempo de uso es de: 1633

asi que probando y preguntando consegui esto:
SET Mensaje = CONCAT('En el inventario, el tiempo de uso es de: ', Ano, ' años, ', Mes , ' mes/es y ', Dia, ' días');
y funcionó
gracias un millo me has salvado la vida hermano estoy muy agradecido por gente desinterezada como tu..

una pregunta mas:
puedo yo llamar los datos de una tabla como ejemplo la de activos de este mismo codigo y actualizar esa misma tabla por ejemplo la de activos en vez de la de prueba_procedure de este mismo codigo y todo en el mmismo procedimiento?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willian

error 1054 - Unknown column

Publicado por Willian (51 intervenciones) el 06/10/2013 19:21:45
Hace seguimiento en las variables ano mes dia. Para ver si realmente tiene valor o si están nulas.. Ahí hace CONCAT('En el inventario, El tiempo de uso es de: ', Ano, 'año', Mes ,'meses', Dia,'dias'); acordate que en todo concat si queres espacios por ejemplo en una oración tenes que hacer entre comas esto ' ' separando cada palabra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error 1054 - Unknown column

Publicado por manoat (16 intervenciones) el 06/10/2013 19:25:01
puedo yo llamar los datos de una tabla como ejemplo la de activos de este mismo codigo y actualizar esa misma tabla por ejemplo la de activos en vez de la de prueba_procedure de este mismo codigo y todo en el mmismo procedimiento?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Willian

error 1054 - Unknown column

Publicado por Willian (51 intervenciones) el 06/10/2013 19:29:35
Si podes desde que la hora de hacer el update uses variables
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

error 1054 - Unknown column

Publicado por manoat (16 intervenciones) el 06/10/2013 19:35:46
gracias hermano voy a intentarlo a ver como me va y posteo a qui mismo como me fue para que sepas el resultado final de tu enseñanza....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar