使用/动态名称调用表的 MySQL 存储过程
Posted
技术标签:
【中文标题】使用/动态名称调用表的 MySQL 存储过程【英文标题】:MySQL Stored Procedure that Calls a Table w/ dynamic Name 【发布时间】:2014-12-08 16:46:27 【问题描述】:我在mysql
中有一个存储过程,它调用一个将值插入到表中的函数。
插入语句就像
INSERT INTO Table1 SELECT * from Table2
Table2
有一个变量名,取决于调用过程的日期,例如
table_201410
,如果该过程是在 2014 年 10 月调用的。所以每个月,该过程都应该从另一个表中进行选择。
我已经阅读了一些关于准备和执行的答案,但是因为我是 MySQL/Programming
的新手。我有点迷茫。
【问题讨论】:
【参考方案1】:你可以像这样使用准备好的语句:
DELIMITER $$
DROP PROCEDURE copy_table $$
CREATE PROCEDURE copy_table ()
BEGIN
set @table_name = date_format(now(),'%Y%m'); -- getting year and month
-- concatenating
set @sql = concat('INSERT INTO Table1 SELECT * from table_',@table_name);
-- creating a prepared statement and executing
PREPARE insert_stmt FROM @sql;
EXECUTE insert_stmt;
DEALLOCATE PREPARE insert_stmt;
END$$
DELIMITER ;
【讨论】:
以上是关于使用/动态名称调用表的 MySQL 存储过程的主要内容,如果未能解决你的问题,请参考以下文章