在DBeaver中创建带参数的MariaDB存储过程报错,求解决方案
问题描述
在DBeaver中编写并调用MariaDB存储过程时遇到语法错误,此前在Oracle环境下可正常操作。即使直接使用MariaDB官网提供的带参数存储过程示例,执行后仍报错:
SQL执行期间发生错误,原因:SQL Error [1064] [42000]: (conn=40) 您的SQL语法有误;请查看与您的MariaDB服务器版本对应的手册,了解在'OUT param1 INT)'附近使用的正确语法。
当前仅能成功创建无参数存储过程,添加任何参数都会触发上述错误。官网示例代码如下:
DELIMITER // CREATE PROCEDURE simpleproc (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM t; END; // DELIMITER ; CALL simpleproc(@a);
解决方案
- 按脚本整体执行:DBeaver默认会按分号分割语句逐行执行,导致
DELIMITER设置无法生效。执行时需选中整个脚本内容,点击工具栏的「执行脚本」按钮(而非「执行当前语句」)。 - 调整DBeaver语句分隔符:
- 点击SQL编辑器右上角的语句分隔符按钮(默认显示为
;),将其修改为//。 - 删除脚本中的
DELIMITER //和DELIMITER ;两行,直接执行剩余代码:CREATE PROCEDURE simpleproc (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM t; END; CALL simpleproc(@a);
- 点击SQL编辑器右上角的语句分隔符按钮(默认显示为
- 检查用户权限:确认当前数据库用户拥有
CREATE ROUTINE和EXECUTE权限,可通过SHOW GRANTS FOR '用户名'@'主机名';命令查看,权限不足可能导致带参数存储过程的语法校验失败。
内容的提问来源于stack exchange,提问作者Lynda
相关产品推荐
相关产品推荐

