存储过程连接

  • 本文关键字:连接 存储过程 mysql
  • 更新时间 :
  • 英文 :

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服务器版本对应的手册,以便在':pcu_rtc_minute: pcu_rtc_second '附近使用正确的语法')FROM site_values where site_id =1' at line 1")"

我的代码有什么问题?

您不需要在字段名周围加上引号。它应该看起来像这样:

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);

您的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...)

这里缺少引号,并且在两个concats中混淆了:

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);

最新更新