问题描述
我正在尝试在 MariaDB 数据库中创建一个存储函数。 我复制了我试图从 MariaDB Docs 创建的函数:
DELIMITER //
CREATE FUNCTION FortyTwo() RETURNS tinyint DETERMINISTIC
BEGIN
DECLARE x tinyint;
SET x = 42;
RETURN x;
END
//
DELIMITER ;
不幸的是,我收到以下错误:
sql 错误 [1064] [42000]:您的 sql 语法有错误;检查与您的 MysqL 服务器版本相对应的手册,以获取在第 3 行的 '' 附近使用的正确语法
最让我困惑的是,根据 MariaDB 文档,给定的代码应该解决我得到的错误代码
解决方案是使用 DELIMITER 命令为进程的持续时间指定一个不同的分隔符
解决方法
我想您可能忘记选择要将此例程存储到的数据库。
所以尝试添加 use
作为第一行
use `test`;
DELIMITER //
CREATE FUNCTION FortyTwo() RETURNS TINYINT DETERMINISTIC
BEGIN
DECLARE x TINYINT;
SET x = 42;
RETURN x;
END
//
DELIMITER ;
,
结果是,我用来发出命令的客户端 DBeaver 导致了问题。 切换到 MySqlWorkbench 后,一切正常。
显然,DBeaver 没有正确识别分隔符..