Mysql中Firebird to Loop语句中的For语句

Mysql中Firebird to Loop语句中的For语句,mysql,firebird,Mysql,Firebird,我在firebird中有这个SQL代码,并且工作得非常好 set term !! ; EXECUTE BLOCK AS declare variable vtable_name VARCHAR(31); BEGIN for select table_name from mytables into :vtable_name execute statement 'DROP TABLE ' || :vtable_name || ';'; END!! set term ; !! 现在,我正在尝试在

我在firebird中有这个SQL代码,并且工作得非常好

set term !! ;

EXECUTE BLOCK AS
declare variable vtable_name VARCHAR(31);
BEGIN
for select table_name from mytables into :vtable_name
execute statement 'DROP TABLE ' || :vtable_name || ';';
END!!

set term ; !!
现在,我正在尝试在Mysql数据库中执行一个非常类似的操作。在阅读mysql手册时,我阅读了关于循环语句和WHILE语句的内容

这是我的mysql代码,但不起作用

WHILE (SET @vtable_name  = (select table_name from mytables))
DO
  BEGIN
   DROP TABLE @vtable_name;
  END;
END WHILE;

您的问题是,从mytables Station中选择table_name将返回一个结果集,您将整个结果集分配给一个变量。 第二个问题是DROP/SELECT语句不允许动态表名/列名

您可以使用动态sql,请参见演示: