Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
3年前关闭。
我刚刚开始学习如何在SQL中创建函数,因此我试图制作一个简单的函数,将日期时间“转换”为文本“ day month_name year”,但由于出现错误我无法弄清楚因为错误消息只是说“语法有误”,并指向首先声明。有人可以告诉我我在做什么错吗?
分隔符$$
CREATE FUNCTION'testf'(invar DATETIME)返回varchar(15)
开始
声明vout varchar(30);
声明vin varchar(15);
设置vin =提取(invar中的月份);
案例
当1然后设置vout ='Styczeń';
当2然后设置vout ='Luty';
当3然后设置vout ='Marzec';
当4然后设置vout ='Kwiecień';
当5然后设置vout ='Maj';
当6然后设置vout ='Czerwiec';
当7然后设置vout ='Lipiec';
当8然后设置vout ='Sierpień';
当9然后设置vout ='Wrzesień';
当10时设置vout ='Październik';
当11然后设置vout ='Listopad';
当12然后设置vout ='Grudzień';
最终案例
返回concat(
提取(来自invar的日期),
''
vout,
''
摘录(来自invar的年份)
);
END $$
定界符;
我已经对它进行了测试(不带引号),并且该函数已成功创建。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
3年前关闭。
我刚刚开始学习如何在SQL中创建函数,因此我试图制作一个简单的函数,将日期时间“转换”为文本“ day month_name year”,但由于出现错误我无法弄清楚因为错误消息只是说“语法有误”,并指向首先声明。有人可以告诉我我在做什么错吗?
分隔符$$
CREATE FUNCTION'testf'(invar DATETIME)返回varchar(15)
开始
声明vout varchar(30);
声明vin varchar(15);
设置vin =提取(invar中的月份);
案例
当1然后设置vout ='Styczeń';
当2然后设置vout ='Luty';
当3然后设置vout ='Marzec';
当4然后设置vout ='Kwiecień';
当5然后设置vout ='Maj';
当6然后设置vout ='Czerwiec';
当7然后设置vout ='Lipiec';
当8然后设置vout ='Sierpień';
当9然后设置vout ='Wrzesień';
当10时设置vout ='Październik';
当11然后设置vout ='Listopad';
当12然后设置vout ='Grudzień';
最终案例
返回concat(
提取(来自invar的日期),
''
vout,
''
摘录(来自invar的年份)
);
END $$
定界符;
最佳答案
只需删除函数名称中的简单引号即可。
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 ;
我已经对它进行了测试(不带引号),并且该函数已成功创建。
08-27 10:44