2013-02-12 73 views
0
SET Project_List_val=CONCAT(Project_Number_val,'_List'); 
Insert Into test (Manthan_Panel_Id) select Manthan_Panel_Id from Project_List_val where Project_Number_val='9'; 

在insert语句中,有一个名为'Project_List_val'的变量,它包含在上述步骤中进行了拼接的表名。这个语句没有将变量的内容作为表名取代,而是将'Project_List_val'作为表名并给出表未找到错误。如何在select语句中获取变量值

有什么建议吗?

回答

3

默认情况下你不能参数表名和列名,所以你需要创建为动态SQL

SET @Project_List_val = CONCAT(Project_Number_val, '_List'); 
SET @projNum = 9; 
SET @sql = CONCAT(' INSERT INTO test (Manthan_Panel_Id) 
        SELECT Manthan_Panel_Id 
        FROM ', @Project_List_val, ' 
        WHERE Project_Number_val = ?'); 

PREPARE stmt FROM @sql; 
EXECUTE stmt USING @projNum; 
DEALLOCATE PREPARE stmt; 
+1

+1我真的不能那么快,你键入。 – DON 2013-02-12 09:03:40

+0

#1064 - 您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,在第1行'NULL'附近使用正确的语法。 – user1597811 2013-02-12 09:22:24

+0

当我调用存储过程时,出现上述错误 – user1597811 2013-02-12 09:23:54

相关问题