微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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 举报,一经查实,本站将立刻删除。