MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 1965|回复: 0
打印 上一主题 下一主题

[PHP相关] 存储过程在windows下正常,在linux下报错1312

[复制链接]
跳转到指定楼层
1#
发表于 2015-4-24 11:37:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
创建了存储过程,根据设备编号查询是否存在表,如果存在插入数据,如果不存在新建表后插入数据,现在遇到的情况是该存储过程在windows下可以正常,在linux下报错1312. 请教下如何解决。

CREATE   PROCEDURE `RTB_SetDeviceInfovalue`(userid varchar(40),deviceID varchar(40),StartTime datetime,EndTime datetime,StepCount INT(4),Length decimal(6,2),Pace decimal(6,2),Calor decimal(6,2),sb int,CreateTime datetime)
BEGIN
DECLARE TableName varchar(40);  #表名
DECLARE SqlStr varchar(4000);    #生成表sql
DECLARE TableExis varchar(40);  #查询表是否存在
DECLARE InsertSqlStr varchar(4000);    #生成表sql
SELECT RTBTableName INTO TableName FROM org_deviceinfo WHERE Mid=userid LIMIT 1;  #查询出表名
IF ISNULL(TableName) THEN     #表为空,重新生成表名,并更新设备表
  SET TableName = CONCAT('RTB_',replace(replace(replace(Now(),'-',''),':',''),' ',''),left(RAND() * 100000000000,4));   #生成表名
  INSERT INTO org_deviceinfo (RTBTableName,Mid,SerialNo) VALUES (TableName,userid,deviceID);
  #UPDATE org_deviceinfo SET RTBTableName = TableName WHERE Uid=deviceID;   # 更新设备表
END IF;
SELECT `TABLE_NAME` INTO TableExis from `INFORMATION_SCHEMA`.`TABLES` where `TABLE_SCHEMA`='ablt2010' and `TABLE_NAME`=TableName LIMIT 1;   #查询表是否存在
IF ISNULL(TableExis) THEN  #不存在 ,建立新表
  SET sqlstr = CONCAT("CREATE TABLE ",TableName,"(id int(4) NOT NULL AUTO_INCREMENT COMMENT 'id' PRIMARY KEY,StartTime datetime DEFAULT NULL COMMENT '开始时间',EndTime datetime DEFAULT NULL COMMENT '结束时间',StepCount INT(4) DEFAULT '0' COMMENT '步数',Length decimal(6,2) DEFAULT '0' COMMENT '长度',Pace decimal(6,2) DEFAULT 0 COMMENT '步速',Calor decimal(6,2) DEFAULT 0 COMMENT '卡',Flag  int NULL DEFAULT 0 COMMENT 'Flag',CreateTime datetime DEFAULT NULL,INDEX CreateTime (CreateTime) USING BTREE);");
  SET @sqlstr = sqlstr;
  prepare stmt from @SqlStr;
  EXECUTE stmt;
  deallocate prepare stmt;
END IF;
#以下是插入数据
SET InsertSqlStr = CONCAT("INSERT INTO ",TableName," (StepCount,Length,Pace,Calor,StartTime,EndTime,CreateTime) VALUES ('",StepCount,"','",Length,"','",Pace,"','",Calor,"','",StartTime,"','",EndTime,"','",CreateTime,"')");
SET @InsertSqlStr = InsertSqlStr;
prepare stmt from @InsertSqlStr;
EXECUTE stmt;
deallocate prepare stmt;
#CALL RTB_SetDeviceInfovalue_DayData(userid,StartTime,StepCount,Length,Pace,Calor,CreateTime);
END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶 踩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-5-6 04:27 , Processed in 0.066370 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表