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



我在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手册时,我读到了关于LOOP状态和WHILE语句的内容。

这是我的mysql代码,但不工作

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

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

您可以使用动态sql,请参阅演示:http://sqlfiddle.com/#!2/cf278/1

并在mysql存储过程中使用一个变量作为表名

相关内容

  • 没有找到相关文章

最新更新