MySQL #1064错误:所有存储过程/函数均触发该错误求助
解决MySQL存储过程#1064语法错误的方案
我一眼就揪出了你代码里的问题——这是写MySQL存储过程时超容易踩的DELIMITER语法坑!你的#1064错误根源就在最后恢复分隔符的语句上。
错误分析
MySQL的DELIMITER命令要求关键字和目标分隔符之间必须留空格,你写的DELIMITER;会被MySQL判定为无效命令,直接触发语法错误。另外,紧凑到挤在一起的代码格式,也会给后续排查问题添乱。
修正后的代码
DELIMITER | DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS; CREATE PROCEDURE STUDENTS_BY_STATUS (sts VARCHAR(10)) BEGIN SELECT BannerId, Name FROM STUDENT WHERE Status = sts; END | DELIMITER ;
关键注意事项
- DELIMITER的正确写法:不管是设置自定义分隔符还是恢复默认的分号,
DELIMITER和后面的符号之间必须有空格,这是MySQL解析器的硬性要求。 - 代码可读性优化:把DROP、CREATE、BEGIN/END块分别换行,逻辑会清晰很多,后续再排查其他语法问题也更轻松。
- 保留字规避:
Status属于MySQL的保留字范畴,建议用反引号包裹成`Status`,避免后续出现潜在的语法冲突。
内容的提问来源于stack exchange,提问作者teddymv
相关产品推荐
相关产品推荐

