MySQL复制表过程失败[重复]

zlwx9yxi  于 2023-01-01  发布在  Mysql
关注(0)|答案(1)|浏览(139)
    • 此问题在此处已有答案**:

MySQL Stored Procedure Variable as Table Name concatenated(2个答案)
昨天关门了。
这个程序我做错了什么?

# 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');
eufgjt7s

eufgjt7s1#

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

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了解更多信息

相关问题