MySQL创建自定义函数报SQL错误 [1064] [42000]的解决办法
因为一次开发需要创建一部分的自定义函数,自定义函数代码如下:
CREATE FUNCTION formatDate(fdate datetime) RETURNS VARCHAR(255)
BEGIN
DECLARE x VARCHAR(255) DEFAULT '';
SET x= date_format(fdate,'%Y年%m月%d日%H时%i分%s秒');
RETURN x;
END
然而在执行创建自定义函数的语句时,却报如下的错误信息:
Error occurred during SQL script execution
原因:
SQL 错误 [1064] [42000]: (conn=2178035) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 2
原因:
大家也都知道,在MySQL中默认分号;
为语句结束或分隔符,遇到分号,MySQL就判断语句已输入完毕,系统开始执行语句。
但在创建函数的过程中,输入完一句命令,就需要使用分号;
来进行分割,这样的话就和MySQL的默认分号产生了冲突。
解决方案:
临时切换分隔符。在执行语句的时候,提前告诉MySQL切换分隔符为我们指定的符号即可,具体如下:
DELIMITER // --先将结束符或者分隔符切换为成 //
CREATE FUNCTION formatDate(fdate datetime) RETURNS VARCHAR(255)
BEGIN
DECLARE x VARCHAR(255) DEFAULT '';
SET x= date_format(fdate,'%Y年%m月%d日%H时%i分%s秒');
RETURN x;
END // -- 语句执行到这里表示结束
DELIMITER ; -- 再结束符切换回来
当然,以上都是使用SQL语句去执行的时候才会遇到这样的情况,如果直接使用工具去创建的话,就不会有这样的问题了。
参考资料:https://blog.csdn.net/tuolingss/article/details/121234411