【发布时间】:2015-05-07 08:14:25
【问题描述】:
我有一个创建临时表的数据库,这些表名是随机生成的并保存在 Checkouts.unid 中。我想删除所有这些表并截断表结帐。我认为最好的解决方案是一个过程,但它不起作用:
DROP PROCEDURE IF EXISTS `spCheckoutsCleanup`;
CREATE PROCEDURE `spCheckoutsCleanup` ()
SQL SECURITY INVOKER
BEGIN
DECLARE `t` VARCHAR(64);
DECLARE `ch` CURSOR FOR SELECT `unid` FROM `Checkouts`;
OPEN `ch`;
drop_tables: LOOP
FETCH `ch` INTO `t`;
DROP TABLE IF EXISTS `t`;
END LOOP;
CLOSE `ch`;
TRUNCATE TABLE `Checkouts`;
END
我总是得到“没有数据 - 提取、选择或处理零行”,尽管这些表在那里并且表 Checkouts 不是空的。
【问题讨论】:
标签: mysql loops cursor procedure