对于Mysql中Firebird to Loop语句中的语句

时间:2013-02-10 01:41:28

标签: 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 ; !!

现在我正在尝试在Mysql数据库中做一个非常相似的事情。阅读mysql手册我读到了关于LOOP声明和WHILE语句的内容。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

use a variable for table name in mysql sproc