2015-11-05 57 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 ; 

它运行在我的箱子。