MySQL 如何使用变量创建准备语句?

标签 mysql prepared-statement

这是我尝试使用的存储过程

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/

相关文章:

java - 使用 Hibernate 管理 MySQL 分区

PHP - 为什么读取这个 csv 文件使用这么多内存,我该如何改进我的代码?

java - 带有 IN 子句中参数列表的 PreparedStatement

sql - Android的SQLiteStatement(准备好的语句)是线程安全的吗? IE。 "bind*, bind*... execute"是原子的吗?

java - 将字符串放入preparedStatement中

php - MySQL准备和执行的问题

windows下导入mysql

mysql - 使用 CURDATE() 进行更新不会执行任何操作

php - 如何在php中提交数据后重新加载页面功能

php - 如何使用 store_result() 获取数据?