MySQL自定义函数报错:位置无效预期标识符,求问题排查
问题原因及修正方案
核心报错原因
你遇到的'as is not valid at this position, expecting an identifier'错误,直接原因是MySQL自定义函数语法中不需要as关键字,你在returns double后添加的as属于无效语法,导致解析报错。
除此之外,代码还有另外几个语法问题:
- 未修改语句分隔符:MySQL默认以
;作为语句结束符,函数定义内部的;会提前终止函数创建,必须先临时修改分隔符。 - 变量赋值方式错误:混淆了会话变量(
@开头)和局部变量的赋值逻辑,且表名拼写错误(coampanies应为companies)。 return语句缺少分号:MySQL要求语句必须以;结尾。
修正后的完整代码
DELIMITER // CREATE FUNCTION world.function1() RETURNS double BEGIN DECLARE averagesalary1 double; SELECT AVG(averagesalary) INTO averagesalary1 FROM companies; RETURN averagesalary1; END // DELIMITER ;
关键修正点说明
- 移除多余的
as关键字,符合MySQL函数定义的标准语法。 - 添加
DELIMITER //临时修改分隔符,避免函数内部的;中断创建流程,最后改回默认分隔符。 - 使用
SELECT ... INTO ...语法给局部变量averagesalary1赋值,替代错误的@averagesalary1=avg(...)写法。 - 修正表名拼写错误,给
return语句添加分号。
内容的提问来源于stack exchange,提问作者Yogaraj Kori
相关产品推荐
相关产品推荐

