MySQL存储过程创建遇Error Code 1064语法错误,请求排查帮助
解决MySQL存储过程创建的1064语法错误
我帮你定位到了导致语法错误的几个问题,下面是修正后的完整可执行代码,以及详细的错误原因说明:
DELIMITER // CREATE PROCEDURE forum.eventlog_create( i_UserID INT, i_Source VARCHAR(128), i_Description TEXT, i_Type INT, i_UTCTIMESTAMP DATETIME ) MODIFIES SQL DATA BEGIN INSERT INTO forum.EventLog (UserID, Source, Description, `Type`) VALUES (i_UserID, i_Source, i_Description, i_Type); END // DELIMITER ;
错误原因解析:
- 无效的列名包裹符号:你在列名
Type周围使用了´(全角重音符/中文单引号),MySQL无法识别这种符号,必须使用英文反引号`来转义保留字或特殊列名。Type属于MySQL保留字,所以必须用反引号包裹才能正常解析。 - 未修改语句分隔符:MySQL默认用分号
;作为语句结束标记,但存储过程内部包含分号,会导致MySQL提前终止存储过程的解析,直接抛出语法错误。因此需要先通过DELIMITER //临时修改分隔符,创建完成后再改回默认的;。 - 冗余参数(非语法错误):你定义了
i_UTCTIMESTAMP参数,但存储过程内部并未使用它,如果不需要这个参数可以直接删除,让代码更简洁。
按照上面的修正代码执行,就能成功创建这个存储过程了。
内容的提问来源于stack exchange,提问作者Matthias Hoste
相关产品推荐
相关产品推荐

