【问题标题】:MySQL Copy table procedure failsMySQL 复制表过程失败
【发布时间】:2022-12-31 01:42:25
【问题描述】:

我在这个过程中做错了什么?

# Copy tabel 
CREATE PROCEDURE `table_backup`(tablename varchar(50))
begin
set @copy_from = tablename;
set @copy_to = CONCAT(tablename, `_`, DATE_FORMAT(NOW(), '%d_%m_%yt%H_%i_%s'));
CREATE TABLE @copy_to LIKE @copy_from;
INSERT @copy_to SELECT * FROM @copy_from;
end

CALL table_backup('table_name');

【问题讨论】:

  • 您不能只使用变量中的表名或列名。为此使用动态 SQL。

标签: mysql copy procedure dynamic-sql


【解决方案1】:

您将需要动态执行查询。这是在存储过程中实现它的方法:

mysql> delimiter //
mysql> create procedure dynamic_query()
   -> begin
   -> set @query=concat("select *from DemoTable2033 where Id=3");
   -> prepare st from @query;
   -> execute st;
   -> end
   -> //
Query OK, 0 rows affected (0.13 sec)

mysql> delimiter ;

您将需要执行 create tableinsert into 作为动态查询。根据您的设置,您可能需要使用相同的模式将它们作为单独的动态查询来执行。

阅读更多https://www.tutorialspoint.com/implement-dynamic-sql-query-inside-a-mysql-stored-procedure

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多