如何使用声明的变量作为 MySQL 中的路径?
Posted
技术标签:
【中文标题】如何使用声明的变量作为 MySQL 中的路径?【英文标题】:How to use a declared variable as a path in MySQL? 【发布时间】:2020-04-02 21:11:59 【问题描述】:我正在处理一个在文本文件中插入一些数据的存储过程。
程序结构如下:
delimiter !!
drop procedure if exists insertIntoFile !!
create procedure insertIntoFile ()
begin
declare path varchar(255);
set path = concat("C:/ProgramData/mysql/MySQL Server 5.7/Uploads/", curdate(), ".txt");
select * from movie_modification where modified = true
into outfile path; //<-- This return an error
end !!
delimiter ;
如您所见,我声明了路径,而不是仅仅写在into outfile
旁边,因为路径必须命名为当前日期,并且我在path
声明中使用curdate()
函数。
由于我为 select into outfile
编写的格式是错误的(它需要 text
不是变量),我怎样才能使它接受变量?
【问题讨论】:
【参考方案1】:你有两个小问题。
首先,您的路径必须是一个字符串,因为您使用双引号,您在开头添加单引号并在路径末尾添加。
另一件事是为您的查询使用准备好的语句
DELIMITER $$
DROP PROCEDURE IF EXISTS insertIntoFile§§
CREATE DEFINER=`root`@`localhost` PROCEDURE `insertIntoFile`()
BEGIN
DECLARE path VARCHAR(255);
SET path = CONCAT("'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/", curdate(), ".txt;'");
SET @sql = CONCAT('select * from movie_modification where modified = true
into outfile ',path);
PREPARE test FROM @sql;
EXECUTE test;
end$$
DELIMITER ;
【讨论】:
我不知道prepared statements是什么,现在我知道了,谢谢!以上是关于如何使用声明的变量作为 MySQL 中的路径?的主要内容,如果未能解决你的问题,请参考以下文章
如何释放直接作为数组获取并存储在变量中的 mysql 结果?
如何将 MySQL 表列作为变量放在 <script> 中?