非常无用的错误消息......无法创建功能

时间:2016-06-04 08:00:52

标签: mysql function

我刚刚开始学习如何在SQL中创建函数,因此我尝试制作一个简单的“转换”函数。 datetime to text" day month_name year"但是我被卡住了,因为我发现错误是因为错误信息只是说"你的语法中有错误"并指出首先声明。有人能告诉我我做错了什么吗?

DELIMITER $$

CREATE FUNCTION 'testf'(invar DATETIME) RETURNS varchar(15)
BEGIN
    DECLARE vout varchar(30);
    DECLARE vin varchar(15);

    set vin = extract(month from invar);

    case vin
        when 1 then set vout = 'Styczeń';
        when 2 then set vout = 'Luty';
        when 3 then set vout = 'Marzec';
        when 4 then set vout = 'Kwiecień';
        when 5 then set vout = 'Maj';
        when 6 then set vout = 'Czerwiec';
        when 7 then set vout = 'Lipiec';
        when 8 then set vout = 'Sierpień';
        when 9 then set vout = 'Wrzesień';
        when 10 then set vout = 'Październik';
        when 11 then set vout = 'Listopad';
        when 12 then set vout = 'Grudzień';
    end case;

    return concat(
        extract(day from invar),
        ' ',
        vout,
        ' ',
        extract(year from invar)
    );
END$$

DELIMITER ;

1 个答案:

答案 0 :(得分:0)

只需删除函数名称中的简单引号即可。

DELIMITER $$

CREATE FUNCTION testf(invar DATETIME) RETURNS varchar(15)
BEGIN
   DECLARE vout varchar(30);
   DECLARE vin varchar(15);

   set vin = extract(month from invar);

   case vin
       when 1 then set vout = 'Styczeń';
       when 2 then set vout = 'Luty';
       when 3 then set vout = 'Marzec';
       when 4 then set vout = 'Kwiecień';
       when 5 then set vout = 'Maj';
       when 6 then set vout = 'Czerwiec';
       when 7 then set vout = 'Lipiec';
       when 8 then set vout = 'Sierpień';
       when 9 then set vout = 'Wrzesień';
       when 10 then set vout = 'Październik';
       when 11 then set vout = 'Listopad';
       when 12 then set vout = 'Grudzień';
   end case;

   return concat(
       extract(day from invar),
       ' ',
       vout,
       ' ',
       extract(year from invar)
   );
END$$

DELIMITER ;

我在没有引号的情况下对其进行了测试,并且功能已成功创建。