CREATE PROCEDURE concatenation()
BEGIN
DECLARE i INT default 1;
declare t varchar(50);
repeat
set @t = concat("INSERT ignore INTO `site_values_" , i , "` (report_time) SELECT CONCAT(", "pcu_rtc_year" , "-" , "pcu_rtc_month" , "-" , "pcu_rtc_day" , " " , "pcu_rtc_hour" , ":" , " pcu_rtc_minute" , ":" , " pcu_rtc_secound",")" ,
" FROM site_values where site_id =" , i);
PREPARE stmt FROM @t;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
set i = i+1;
until i =1001
end repeat;
END;我有上面的密码。我可以创造程序。但是当我称它为级联时,它会显示
"SQLSyntaxError (1064,“您的SQL语法有错误;请检查与MySQL服务器版本相对应的手册,以获得使用site_values的正确语法: pcu_rtc_minute: pcu_rtc_secound),其中site_id =1‘在第1行”)。
我的密码怎么了?
发布于 2013-05-29 19:30:31
你不需要字段名旁边的引号。它应该是这样的:
concat("INSERT ignore INTO `site_values_" , i , "` (report_time) SELECT CONCAT(pcu_rtc_year , "-" , pcu_rtc_month , "-" , pcu_rtc_day , " " , pcu_rtc_hour, ":" , pcu_rtc_minute, ":" , pcu_rtc_secound) FROM site_values where site_id = " , i);另外,由于您使用的是2个CONCAT语句,引号可能是一个问题。你可以试试这个:
concat("INSERT ignore INTO `site_values_" , i , "` (report_time) SELECT CONCAT(pcu_rtc_year , '-' , pcu_rtc_month , '-' , pcu_rtc_day , ' ' , pcu_rtc_hour, ':' , pcu_rtc_minute, ':' , pcu_rtc_secound) FROM site_values where site_id = " , i);发布于 2013-05-29 19:30:50
您的SQL没有构造语法错误吗:
"...SELECT CONCAT(", "pcu_rtc_year" , "-" , "pcu_rtc_month" , "-" , "pcu_rtc_day" , " " , "pcu_rtc_hour" , ":" , " pcu_会导致
SELECT CONCAT(pcu_rtc_year-pcu_rtc_month-pcu_rtc_day pcu_rtc_hour:pcu...)好像你缺少逗号了。
"...SELECT CONCAT(", "pcu_rtc_year," , "'-'," , "pcu_rtc_month," , "'-'," , "pcu_rtc_day," , "' '," , "pcu_rtc_hour," , "':'," , " pcu_...)结果:
SELECT CONCAT(pcu_rtc_year,'-',pcu_rtc_month,'-',pcu_rtc_day,' ',pcu_rtc_hour,':',pcu...)发布于 2013-05-29 19:34:57
你在里面漏掉了引号,在这两个级联中混在了一起:
set @t = concat("INSERT ignore INTO `site_values_" , i , "` (report_time)",
"SELECT CONCAT(pcu_rtc_year, '-', pcu_rtc_month, '-', pcu_rtc_day, ' ',
pcu_rtc_hour, ':', pcu_rtc_minute, ':', pcu_rtc_secound)",
"FROM site_values where site_id =" , i);https://stackoverflow.com/questions/16822000
复制相似问题