MySQL 创建多个表的过程不起作用(WHILE 循环动态 SQL)

MySQL Procedure to CREATE multiple tables is not working (WHILE loop dynamic SQL)

我添加了一个存储过程以在 MySQL Workbench 中使用 WHILE 循环在动态 SQL 中创建多个 table。该查询仅创建 last table,而不是全部。我已经检查了 drop table 以删除 if table 存在。但它仍然显示已经存在。这是查询。

CREATE DEFINER=`root`@`localhost` PROCEDURE `weeklyLooper`(IN weeklycount INT)
BEGIN

SET @count = 0;
SET @weeklylooper = weeklycount;
SET @dumpclear =  CONCAT('week' , @weeklylooper);

WHILE @count <= @weeklylooper DO
set @count = @count+1;
SET @weeklyname =  CONCAT('week' , @count);
SET @weekly =  CONCAT('total_' , @weeklyname, '_deposits');

SET @dropquery = CONCAT('DROP TABLE IF EXISTS `', @weeklyname, '`');
PREPARE droptablequery FROM @dropquery; 
EXECUTE droptablequery; 
DEALLOCATE PREPARE droptablequery; 

SET @selectquery = CONCAT('CREATE temporary TABLE ', @weeklyname ,' AS SELECT sum(deposits) As ', @weekly,'  FROM base0');

PREPARE selecttablequery FROM @selectquery; 
EXECUTE selecttablequery; 
DEALLOCATE PREPARE selecttablequery;

END WHILE;

END

请帮我完成这个。

您正在创建临时表 - 临时表仅在会话范围内存在 - 因为每个 exec 都在一个唯一的会话中并且与您所在的会话不同 运行 临时表中的过程永远不会可用于您所在的会话 运行 程序...

或如手册所述'You can use the TEMPORARY keyword when creating a table. A TEMPORARY table is visible only within the current session, and is dropped automatically when the session is closed.'https://dev.mysql.com/doc/refman/8.0/en/create-temporary-table.html

考虑创建永久表并在完成后将其删除。