MySQL, как вы делаете подготовить заявление с переменной? - PullRequest
0 голосов
/ 14 марта 2012

Это хранимая процедура, которую я пытаюсь использовать

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

1 Ответ

1 голос
/ 14 марта 2012

Точка с запятой отсутствует после

SET filename = CONCAT('~/Sample',NOW(),'.csv'))

и одна скобка - это слишком много (также отметил Деварт. Спасибо). Измените его на

SET filename = CONCAT('~/Sample',NOW(),'.csv');

Проверено, чтобы быть уверенным. Работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...