MySQL Workbench中DECLARE声明变量报1064语法错误如何解决?
MySQL存储过程DECLARE语法报错解决方案
错误原因
- 存储过程的逻辑执行体必须用
BEGIN和END关键字包裹,你当前代码没有添加该结构,导致DECLARE语句直接暴露在过程定义的参数结构之外,无法被MySQL语法解析器识别。 - 存储过程内部使用
;作为单条语句的结束符,默认情况下MySQL遇到;就会判定当前输入的SQL语句结束,会提前截断CREATE PROCEDURE的定义内容,触发语法错误。
修复后可运行的完整代码
-- 临时修改语句分隔符为//,避免过程内部的;提前结束创建语句 DELIMITER // CREATE PROCEDURE sp_insertarPro( nom varchar(100), pre decimal(18, 2), img varchar(100) ) BEGIN -- DECLARE必须放在过程体最开头,你这里的变量声明位置本身是正确的 DECLARE cod int; SELECT IFNULL(MAX(codigoProducto),0)+1 into cod FROM producto; INSERT INTO producto VALUES (cod,nom,pre,img); END // -- 执行完成后改回默认分隔符 DELIMITER ;
内容的提问来源于stack exchange,提问作者Carlos Silva Suarez
相关产品推荐
相关产品推荐

