You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:06:04