调用存储过程时MYSQL错误

时间:2014-05-20 10:22:33

标签: mysql sql stored-procedures

我正在尝试创建一个存储过程,但在调用时我遇到了错误。

存储过程如下

CREATE DEFINER=`root`@`%` PROCEDURE `CreateTableProjectIssues`(IN projName     VARCHAR(200), IN tablName VARCHAR(200))
BEGIN
SET @comnd = CONCAT('create table ',tablName,' as ( select r1.key, s1.comments, p1.fname, s1.line, s1.status 
 FROM test.issues s1, test.proj p1, test.rules r1 
 WHERE s1.root_component_id=(select id from test.proj p2 
                                   where p2.name=''',projName,''') 
       and s1.component_id=p1.id 
       and s1.rule_id=r1.id');
 PREPARE stmt FROM @comnd;
 EXECUTE stmt;
END

低于错误

  

错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第5行的''附近使用正确的语法

注意:我知道SQL查询格式错误,未使用加入。

知道这个错误的原因吗?

1 个答案:

答案 0 :(得分:0)

你得了(太多了。试试这个:

CREATE DEFINER=`root`@`%` PROCEDURE `CreateTableProjectIssues`(IN projName     VARCHAR(200), IN tablName VARCHAR(200))
BEGIN
SET @comnd = CONCAT('create table ',tablName,' as select r1.key, s1.comments, 

/*removed the (                             here ^  */

p1.fname, s1.line, s1.status 
 FROM test.issues s1, test.proj p1, test.rules r1 
 WHERE s1.root_component_id=(select id from test.proj p2 
                                   where p2.name=''',projName,''') 
       and s1.component_id=p1.id 
       and s1.rule_id=r1.id');
 PREPARE stmt FROM @comnd;
 EXECUTE stmt;
END
相关问题