【问题标题】:MySQL Stored Procedure that Calls a Table w/ dynamic Name使用/动态名称调用表的 MySQL 存储过程
【发布时间】:2014-12-08 16:46:27
【问题描述】:

我在MySQL 中有一个存储过程,它调用一个将值插入到表中的函数。 插入语句就像

INSERT INTO Table1 SELECT * from Table2

Table2 有一个变量名,取决于调用过程的日期,例如 table_201410 ,如果该过程是在 2014 年 10 月调用的。所以每个月,该过程都应该从另一个表中进行选择。

我已经阅读了一些关于准备和执行的答案,但是因为我是 MySQL/Programming 的新手。我有点迷茫。

【问题讨论】:

    标签: mysql stored-procedures prepare


    【解决方案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 ;
    

    【讨论】:

      猜你喜欢
      • 2019-06-02
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多