在执行准备好的语句中使用表名作为参数

问题描述

PHPMyAdmin 的查询框中工作,我想为 MysqL 5.5 数据库中的每个表编写一个输出文件“protokoll”。由于我有许多包含相同表且仅名称不同的数据库,因此我希望输出文件文件名看起来像 /tmp/dbname_protokoll_tablename_.csv

这有效:

SELECT DATABASE() into @client;
SET @dir = '/tmp/';
SET @table = 'Adressen';
SET @stmt = CONCAT( 'SELECT * from ',@table,' WHERE MarkDel=1 into outfile ''',@dir,@client,'_Protokoll_','.csv'' CHaraCTER SET utf8 FIELDS TERMINATED BY '','' OPTIONALLY ENCLOSED BY ''"'' LInes TERMINATED BY ''\r\n'' ');
PREPARE DoExport from @stmt;
EXECUTE DoExport;
DEALLOCATE PREPARE DoExport;

从我读到的关于准备的内容来看,我应该能够使用“?”在语句内,如

SET @stmt = CONCAT( 'SELECT * from ? WHERE MarkDel=1 into outfile ...

然后使用像

这样的参数列表执行此操作
EXECUTE DoExport USING 'Adressen','Familien','Kinder';

但我无法让它工作,我收到的只是一个不明确的语法错误。我该如何重写?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)