2015-11-05 2 views
0

Я не могу заставить эту работу работать исправно, ее всегда другая ошибка, которую я получаю. Любые предложения оцениваются на данный момент ...Невозможно создать функцию MySQL синтаксические ошибки

CREATE DEFINER=`db`@`localhost` FUNCTION `output_date`(in_date DATE) RETURNS DATE 
    READS SQL DATA 
BEGIN 
    DECLARE date_format_index INT; 
    DECLARE date_format_string VARCHAR; 

    SELECT s.output_date_format INTO date_format_index FROM config s 
    SET date_format_string = (CASE date_format_index WHEN 2 THEN '%d-%m-%Y' WHEN 3 THEN '%m-%d-%Y' ELSE '%Y-%m-%d' END); 

    RETURN in_date 
END 

При попытке обработать эту функцию я использую DELIMITER $$.

Текущая ошибка ...

Error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; SELECT s.output_date_format INTO date_format_index FROM system_config s SET d' 

Моя среда MyEclipse, новая версия. Версия MySQL у меня есть 5.2.

+0

Другая ошибка каждый раз является подозрительной. Можете ли вы опубликовать несколько примеров? Какой клиент MySQL вы используете для его создания? Некоторые из них потребуют от вас определить временный разный разделитель, чем ';', чтобы разрешить корректно обрабатывать внутренние термины. –

+0

При попытке компиляции я использую «DELIMITER $$». Через несколько минут я опубликую некоторые ошибки. Как и моя среда ... – Sh4d0wsPlyr

ответ

0

Вы отсутствуют некоторые точки с запятой и проблема с VARCHAR, попробуйте следующее:

DELIMITER $$ 

CREATE DEFINER=`db`@`localhost` FUNCTION `output_date`(in_date DATE) RETURNS DATE 
    READS SQL DATA 
BEGIN 
    DECLARE date_format_index INT; 
    DECLARE date_format_string VARCHAR(100); -- obviously change the size 

    SELECT s.output_date_format INTO date_format_index FROM config s; 
    SET date_format_string = (CASE date_format_index WHEN 2 THEN '%d-%m-%Y' WHEN 3 THEN '%m-%d-%Y' ELSE '%Y-%m-%d' END); 

    RETURN in_date; 
END 
$$ 
DELIMITER ; 

Он работает на моем окне.

Смежные вопросы