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

MySQL 8.0.25存储过程编译报ERROR 1064(42000)求助

MySQL存储过程编译报错ERROR 1064(42000)的排查与修复

问题描述

编译以下存储过程时触发ERROR 1064(42000)语法错误,报错提示:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 23

MySQL版本:8.0.25-commercial

原存储过程代码:

DELIMITER |
CREATE PROCEDURE LyrisDbcleanup(OUT p_error_code INT,
                       OUT p_error_msg  VARCHAR(250))
BEGIN

   DECLARE done BOOLEAN DEFAULT FALSE;
   DECLARE v_site_id VARCHAR(2);
   DECLARE v_name VARCHAR(10);
   DECLARE c_cur CURSOR FOR SELECT eno FROM  k;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

   SET @AUTOCOMMIT = 0;
   SET @v_name = 'keyanda';
   OPEN c_cur;
   loop1 :LOOP
   FETCH FROM c_cur INTO v_site_id;

  IF done THEN
   CLOSE c_cur;
   LEAVE loop1;
 END IF;
SET @p_error_code = 0;
SET @p_error_msg = 'Successfullyprocessed';
END |

DELIMITER ;

错误原因及修复方案

  • LOOP语句未闭合:原代码定义了loop1 :LOOP,但缺少对应的END LOOP;语句,导致语法结构不完整,这是触发报错的直接原因。
  • 变量赋值混淆:存储过程的OUT参数p_error_code、p_error_msg是局部参数,不需要加@前缀;声明的局部变量v_name不应使用用户变量格式@v_name;设置自动提交的@AUTOCOMMIT写法错误,应改为SET AUTOCOMMIT = 0;。

修复后的完整代码

DELIMITER |
CREATE PROCEDURE LyrisDbcleanup(OUT p_error_code INT,
                       OUT p_error_msg  VARCHAR(250))
BEGIN
   DECLARE done BOOLEAN DEFAULT FALSE;
   DECLARE v_site_id VARCHAR(2);
   DECLARE v_name VARCHAR(10);
   DECLARE c_cur CURSOR FOR SELECT eno FROM k;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

   SET AUTOCOMMIT = 0;
   SET v_name = 'keyanda';
   OPEN c_cur;

   loop1 :LOOP
       FETCH FROM c_cur INTO v_site_id;

       IF done THEN
           CLOSE c_cur;
           LEAVE loop1;
       END IF;

       SET p_error_code = 0;
       SET p_error_msg = 'Successfully processed';
   END LOOP loop1;

   COMMIT;
END |
DELIMITER ;

额外说明

  • 确保游标查询的表k存在,且字段eno类型与v_site_id的VARCHAR(2)兼容,避免运行时数据类型不匹配错误。
  • 若无需事务控制,可移除SET AUTOCOMMIT = 0;和COMMIT;语句,保持默认自动提交模式。

内容的提问来源于stack exchange,提问作者Keyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:46:13