因为一次开发需要创建一部分的自定义函数,自定义函数代码如下:

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

然而在执行创建自定义函数的语句时,却报如下的错误信息:

SQL错误1064(42000)

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

标签: MySQL, SQL, SQL错误, SQL错误1064, SQL错误42000

添加新评论