日期:2014-05-16  浏览次数:20700 次

这个存储过程哪里写错了
用navicat 写的

BEGIN
DECLARE cc varchar(200);
update lastmsg set curpostime=tcurpostime,latitude=tlatitude,longitude=tlongitude,speed=tspeed where gpssn=tgpssn;
if insertflag='1' then


SET cc=concat('insert into t'+ tgpssn+' (curpostime,latitude,longitude,speed) values('''+tcurpostime+''','''+tlatitude+''','''+tlongitude+''','''+tspeed+''')');
SET @SQLString=cc;
PREPARE stmt from @SQLString;
  EXECUTE stmt;
  commit;


end IF;
END

参数:IN `tcurpostime` varchar(19),IN `tlatitude` varchar(12),IN `tlongitude` varchar(12),IN `tspeed` varchar(5),IN `tgpssn` varchar(20),IN `insertflag` varchar(1)




运行提示错误:Procedure execution failed
1292 - Truncated incorrect DOUBLE value: '')'

------解决方案--------------------
你的表lastmsg中的字段都是什么数据类型? 你的错误提示是数据转换有问题,你的参数全是 varchar, 而表中字段应该是有 数字型的。

desc lastmsg
desc t'+ tgpssn+' 相关的表贴出以供分析。