Создание хранимой процедуры в Mysql с переменной BLOB в ней - PullRequest
0 голосов
/ 29 декабря 2011

Это хранимая процедура, которая работала в более ранней версии mysql.Теперь у меня Mysql 5.5.19.0, и я не могу создать хранимую процедуру, которая выглядит следующим образом


DELIMITER $$

USE `XXX`$$

DROP PROCEDURE IF EXISTS `current_to_prev`$$

CREATE DEFINER=`user`@`localhost` PROCEDURE `current_to_prev`(
IN _USERNAME VARCHAR(45),
IN _FILENAME VARCHAR(45),
IN _TYPE INT
)
BEGIN
    DECLARE _uid INT;
    DECLARE _fdata BLOB;
    DECLARE _fname VARCHAR(45);
    DECLARE _type VARCHAR(45);
    SET _uid = (SELECT userid FROM USER WHERE username = _USERNAME);
    SET _fdata = (SELECT FileData FROM userfiles_current WHERE userid = _uid AND filename = _FILENAME);
    SET _fname = (SELECT FileName FROM userfiles_current WHERE userid = _uid AND filename = _FILENAME);
    SET _type = (SELECT TYPE FROM userfiles_current WHERE userid = _uid AND TYPE = _TYPE);
    UPDATE userfiles_prev SET FileData = _fdata, FileName = _fname, TYPE = _type WHERE userid = _uid AND filename = _FILENAME;
END$$

DELIMITER ;

Я получаю следующую ошибку:

Query : CREATE DEFINER=<code>user @ localhost PROCEDURE current_to_prev(В _USERNAME VARCHAR (45), В _FILENAME VARCHAR (45), В _TYPE INT ...

Код ошибки: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQLдля правильного синтаксиса использовать рядом с _FILENAME VARCHAR (45), IN _TYPE INT) BEGIN DECLARE _uid INT;ОБЪЯВЛЯЙТЕ _fdata B 'в строке 3

Как видите, MySQL не может принимать переменную BLOB.Как я могу решить эту проблему?

Заранее спасибо!

1 Ответ

2 голосов
/ 29 декабря 2011

MySQL принимает параметры, переменные и т. Д. С типом, похожим на blob.

Ошибка в параметре IN _FILENAME - это зарезервированное слово .Измени это на что-то другое, и у тебя все будет хорошо.

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