Comunidad de diseño web y desarrollo en internet online

Error en procedimiento

Citar            
MensajeEscrito el 06 Dic 2012 03:07 pm
Hola, tengo el procedimiento:

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=SUBSTRING(tempo,2,2);
    varM=SUBSTRING(tempo,4,2);
    varS=SUBSTRING(tempo,7,2);
    var1=espacio*1000;
    segs=(varH*3600)+(varM*60)+varS;
    resultado=(var1/segs)*3.6;
    RETURN resultado;
INSERT INTO datos (kmh) VALUES (resultado);
END
//

Me da error al igualar la primera variable "varH" al resultado del SUBSTRING(tempo,2,2).
¿Donde está el error? y ¿Cual es?. Gracias.

Por solilopi

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Dic 2012 03:31 pm
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)

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Dic 2012 07:27 pm

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?.

Por solilopi

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Dic 2012 12:11 am
en mysql cuando queires asignarle un valor a una variable tambien se usa la palabra reservada SET

Código MySQL :

                     varH=CAST(SUBSTRING(tempo,2,2)AS UNSIGNED);

lo correcto es

Código MySQL :

                     SET varH=CAST(SUBSTRING(tempo,2,2)AS UNSIGNED);

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Dic 2012 06:25 pm
Muchisimas gracias!!!!!!!!!!! por fin funciona. Gracias de corazón. :lol:

Por solilopi

16 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.