我没有到达语法错误的地方,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;
过程时需要更改分隔符:
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
关于@Zagor23的答案。您可以在DROP PROCEDURE...
行中删除$$
并在其后放置DELIMITER $$
。因此,您将拥有以下内容:
DROP PROCEDURE IF EXISTS UPDATELOMON;
DELIMITER $$