MySQL if嵌套使用时报错,请高人指教啊,急急急!!!

CREATE PROCEDURE createControlLst (IN pipeId VARCHAR(50),IN pointId VARCHAR(50))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE cnt INT DEFAULT 0;
DECLARE stempoint VARCHAR(50);
DECLARE ID1 VARCHAR(50);
DECLARE leftpoint1 VARCHAR(50);
DECLARE rightpoint1 VARCHAR(50);
DECLARE Huan1 VARCHAR(50);
DECLARE cur1 CURSOR FOR SELECT ID,leftpoint,rightpoint,Huan FROM gistest where ID<>pipeId and (leftpoint=pointId or rightpoint=pointId);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
insert into tmppipeLst values (null,pipeId);
SET @@max_sp_recursion_depth = 100;

OPEN cur1;
FETCH cur1 INTO ID1,leftpoint1,rightpoint1,Huan1;
WHILE done=0 DO
IF(Huan1 = 1) THEN

(
select count(*) INTO cnt from gisfa WHERE ParentID=ID1;
IF(cnt= 0) THEN

(IF(leftpoint1 = pointId) THEN

(set stempoint=rightpoint1;
CALL createControlLst(ID1,stempoint));
ELSEIF (rightpoint1 = pointId) THEN
(set stempoint=leftpoint1;
CALL createControlLst(ID1,stempoint);)
END IF;)
ELSEIF (cnt>0) THEN
INSERT INTO tmpfaLst (ID) SELECT ID FROM gisfa WHERE ParentID=pipeId ;
END IF;)
END IF;
FETCH cur1 INTO ID1,leftpoint1,rightpoint1,Huan1;
END WHILE;

CLOSE cur1;
END

IF(Huan1 = 1) THEN
IF(cnt= 0) THEN
(IF(leftpoint1 = pointId) THEN

 ELSEIF (rightpoint1 = pointId) THEN
END IF;)
ELSEIF (cnt>0) THEN
END IF;

END IF;
END IF;
把endif拿出来你就会发现你少了一个ENDif

语句块把()去掉,不用,而且写代码都不缩进的,看得不累吗?

 CREATE PROCEDURE createControlLst (IN pipeId VARCHAR(50),IN pointId VARCHAR(50))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE cnt INT DEFAULT 0;
DECLARE stempoint VARCHAR(50);
DECLARE ID1 VARCHAR(50);
DECLARE leftpoint1 VARCHAR(50);
DECLARE rightpoint1 VARCHAR(50);
DECLARE Huan1 VARCHAR(50);
DECLARE cur1 CURSOR FOR SELECT ID,leftpoint,rightpoint,Huan FROM gistest where ID<>pipeId and (leftpoint=pointId or rightpoint=pointId);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
insert into tmppipeLst values (null,pipeId);
SET @@max_sp_recursion_depth = 100;
OPEN cur1;
FETCH cur1 INTO ID1,leftpoint1,rightpoint1,Huan1;
WHILE done=0 DO
  IF (Huan1 = 1) THEN
    select count(*) INTO cnt from gisfa WHERE ParentID=ID1;
    IF cnt=0 THEN     
      IF(leftpoint1 = pointId) THEN          
        set stempoint=rightpoint1;
        CALL createControlLst(ID1,stempoint);         
      ELSEIF (rightpoint1 = pointId) THEN       
        set stempoint=leftpoint1;
        CALL createControlLst(ID1,stempoint);      
      END IF;    
    ELSEIF (cnt>0) THEN
      INSERT INTO tmpfaLst (ID) SELECT ID FROM gisfa WHERE ParentID=pipeId ;
    END IF;  
  END IF;
  FETCH cur1 INTO ID1,leftpoint1,rightpoint1,Huan1;
END WHILE;

CLOSE cur1;
END