这是我尝试使用的存储过程
DELIMITER ##
CREATE PROCEDURE exportFile()
BEGIN
DECLARE filename VARCHAR(255);
SET filename = CONCAT('~/Sample',NOW(),'.csv'));
SET @outfilestmt = concat('SELECT * INTO OUTFILE ',"'", filename,"'",' FROM Results') ;
PREPARE stmt FROM @outfilestmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END ##
DELIMITER ;
这是我收到的错误
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ');
SET @outfilestmt = concat('SELECT * INTO OUTFILE ',"'", filename,"'",' FROM R' at line 6
期望的结果:
call exportFile
--~/Sample2012-03-14-10:42:51.cvs
call exportFile
--~/Sample2012-03-14-10:42:52.cvs
call exportFile
--~/Sample2012-03-14-10:42:53.cvs
最佳答案
后面缺少分号
SET filename = CONCAT('~/Sample',NOW(),'.csv'))
而且一个大括号太多了(Devart 也指出了。谢谢)。将其更改为
SET filename = CONCAT('~/Sample',NOW(),'.csv');
测试了一下可以确定。有效!
关于MySQL 如何使用变量创建准备语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9704201/