0

我没有得到语法错误的地方,MySql 说未知系统已完成:分隔符 |

CREATE PROCEDURE UPDATELOMON ()    
BEGIN 

  DECLARE First_cur CURSOR FOR SELECT oraginal_level,level FROM LOMTEMP;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

  OPEN First_cur;

  FirstLoop: LOOP
  FETCH First_cur INTO oraginal,toupdate;
  IF done THEN
  LEAVE FirstLoop;
  END IF;

  CALL updt(oraginal,toupdate);
  END LOOP FirstLoop;

  CLOSE First_cur;

END;
4

2 回答 2

1

创建 STORED PROCEDURE 时需要更改分隔符:

DELIMITER $$

DROP PROCEDURE IF EXISTS UPDATELOMON$$
CREATE PROCEDURE UPDATELOMON ()    
BEGIN 

  DECLARE First_cur CURSOR FOR SELECT oraginal_level,level FROM LOMTEMP;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

  OPEN First_cur;

  FirstLoop: LOOP
  FETCH First_cur INTO oraginal,toupdate;
  IF done THEN
  LEAVE FirstLoop;
  END IF;

  CALL updt(oraginal,toupdate);
  END LOOP FirstLoop;

  CLOSE First_cur;

END$$
DELIMITER ;

默认情况下,MySQL 本身将分号识别为语句分隔符,因此您必须临时重新定义分隔符,以使 MySQL 将整个存储程序定义传递给服务器。否则,MySQL 在到达 END 语句之前中断 CREATE PROCEDURE(在第一个分号上,在您的情况下,它位于 CONTINUE HANDLER 语句之前)。

您可以查看文档以获取更多详细信息: http: //dev.mysql.com/doc/refman/5.5/en/stored-programs-defining.html

于 2013-10-03T12:38:06.273 回答
0

关于@Zago23 的回答。您可以在线删除并放在$$它后面。因此,您将拥有以下内容:DROP PROCEDURE...DELIMITER $$

DROP PROCEDURE IF EXISTS UPDATELOMON;
DELIMITER $$
于 2017-03-14T01:33:16.443 回答