我刚刚开始学习如何在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 ;
答案 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 ;
我在没有引号的情况下对其进行了测试,并且功能已成功创建。