我正在尝试创建一个存储过程,但在调用时我遇到了错误。
存储过程如下
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查询格式错误,未使用加入。
知道这个错误的原因吗?
答案 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