首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储过程串联mysql

存储过程串联mysql
EN

Stack Overflow用户
提问于 2013-05-29 19:09:54
回答 3查看 3.2K关注 0票数 0
代码语言:javascript
复制
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行”)。

我的密码怎么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-29 19:30:31

你不需要字段名旁边的引号。它应该是这样的:

代码语言:javascript
复制
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语句,引号可能是一个问题。你可以试试这个:

代码语言:javascript
复制
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);
票数 1
EN

Stack Overflow用户

发布于 2013-05-29 19:30:50

您的SQL没有构造语法错误吗:

代码语言:javascript
复制
"...SELECT  CONCAT(", "pcu_rtc_year" , "-" , "pcu_rtc_month" , "-" , "pcu_rtc_day" , "  " , "pcu_rtc_hour" , ":" , " pcu_

会导致

代码语言:javascript
复制
SELECT CONCAT(pcu_rtc_year-pcu_rtc_month-pcu_rtc_day pcu_rtc_hour:pcu...)

好像你缺少逗号了。

代码语言:javascript
复制
"...SELECT  CONCAT(", "pcu_rtc_year," , "'-'," , "pcu_rtc_month," , "'-'," , "pcu_rtc_day," , "'  '," , "pcu_rtc_hour," , "':'," , " pcu_...)

结果:

代码语言:javascript
复制
SELECT CONCAT(pcu_rtc_year,'-',pcu_rtc_month,'-',pcu_rtc_day,' ',pcu_rtc_hour,':',pcu...)
票数 0
EN

Stack Overflow用户

发布于 2013-05-29 19:34:57

你在里面漏掉了引号,在这两个级联中混在了一起:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16822000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档