mysql - 如何在select语句中获取变量值作为表名

标签 mysql stored-procedures

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


在插入语句中,有一个名为“ Project_List_val”的变量,该变量由上一步中确认的表名组成。该语句不将变量的内容作为表名,而是将“ Project_List_val”作为表名,并给出未找到表的错误。

有什么建议么?

最佳答案

默认情况下,您无法参数化表名和列名,因此需要为此创建Dynamic 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;

关于mysql - 如何在select语句中获取变量值作为表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14828838/

相关文章:

java - hibernate 存储过程-未知支持REF_CURSOR参数

sql-server - SQL Server : selecting multiple columns into multiple variables in a stored procedure

mysql - 对 BITWISE 感到困惑,我正在使用 MySQL

php - PHP图像上传检查上传的照片大小不起作用

c# - SQL 服务器 2005 : dynamically adding parameters to a stored procedure

c# - C#获取oracle存储过程标准输出的方法

mysql - MySQL For Each条件具有特定值

mysql - 在mysql中相交或减

MySQL if/else 表

mysql - 如何在具有唯一字符序列的MySQL上生成TRIGGER?