tuadmin escribió:
sera por que varH es un INT(entero ) o espera que su valor sea entero
mientras SUBSTRING(tempo,2,2); retorna un STRING , osea son incompatibles
lee esta informacion para convertir valores en otros
http://dev.mysql.com/doc/refman/5.0/es/cast-functions.html
en resumen necesitas hacer esto
Código MySQL :
CAST(variable AS tipo)
Lo he hecho:
Código MySQL :
DELIMITER //
CREATE PROCEDURE calcula_velocidad (espacio decimal(5.2),tempo varchar(8))
BEGIN
DECLARE var1 decimal(8.2);
DECLARE varH INT DEFAULT 0;
DECLARE varM INT DEFAULT 0;
DECLARE varS INT DEFAULT 0;
DECLARE segs INT DEFAULT 0;
DECLARE resultado decimal(5.2);
varH=CAST(SUBSTRING(tempo,2,2)AS UNSIGNED);
varM=CAST(SUBSTRING(tempo,4,2)AS UNSIGNED);
varS=CAST(SUBSTRING(tempo,7,2)AS UNSIGNED);
var1=espacio*1000;
segs=(varH*3600)+(varM*60)+varS;
resultado=(var1/segs)*3.6;
RETURN resultado;
INSERT INTO datos (kmh) VALUES (resultado);
END
//
Y el resultado es el mismo:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=CAST(SUBSTRING(tempo,2,2)AS UNSIGNED); varM=CAST(SUBSTRING(tempo,4,2)AS UN' at line 9
El CAST está hecho y "devuelve" unsigned, osea, entero sin signo y la variable es del tipo entero. ¡¡No lo entiendo!!. ¿Qué he hecho mal?.