MariaDB 10.5.10创建存储过程报ERROR 1064语法错误求助
错误原因
- 语法报错的核心是
CREATE DEFINER子句写法不符合MariaDB规范:用户名apple和主机标识%之间不能加多余空格,必须连写为apple@%格式。解析器读到错误的空格分隔后无法正常识别后续的存储过程参数定义,因此抛出near 'IN \numMonth` INT(1)'`的语法错误。
修正方案
删除DEFINER部分的多余空格即可,修正后的代码参考如下:
DROP PROCEDURE IF EXISTS `AA_SET_NUMBER`; DELIMITER $$ CREATE DEFINER = `apple`@`%` PROCEDURE `AA_SET_NUMBER`(IN `numMonth` INT(1)) BEGIN SET @strKey = ' WHERE `cd`.`KEY` = \'DELM\''; IF numMonth IS NULL THEN SET @strMonth = ' AND MONTH(`c`.`CREATED_ON`) = MONTH(CURRENT_DATE())'; ELSE SET @strMonth = CONCAT(' AND MONTH(`c`.`CREATED_ON`) = \'', numMonth, '\' '); END IF; -- 补充原有存储过程的剩余逻辑 END $$ DELIMITER ;
内容的提问来源于stack exchange,提问作者sandy
相关产品推荐
相关产品推荐

