DECLARE CONTINUE HANDLER FOR NOT FOUND SET变量不起作用

Kan*_*iya 2 mysql sql database stored-procedures

嗨我在mysql中使用存储过程

当我尝试

 DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_prefrences=1 ;
Run Code Online (Sandbox Code Playgroud)

并尝试编译,它在phpmyadmin中给出一个错误.

1193 - 未知的系统变量'no_more_prefrences'

我在另一个存储过程中使用了具有不同名称的相同行.它工作正常.

这是我的存储过程.

DELIMITER $$
 DROP PROCEDURE IF EXISTS get_all_children_of_lob$$

CREATE PROCEDURE get_all_children_of_lob(
   IN parent_id INT
)

BEGIN

     DECLARE lob_preferenceid INT;
     DECLARE lob_parentid INT;
     DECLARE lob_value VARCHAR(100);
     DECLARE lob_isavailable INT;
     DECLARE lob_ischildavailable INT;
     DECLARE lob_isuseradded INT;

     DECLARE cur CURSOR for select PreferenceID,ParentID,Value,IsAvailable,IsChildAvailable,IsUserAdded from table WHERE ParentID=parent_id ;
     DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_prefrences=1 ;

     CREATE TEMPORARY TABLE IF NOT EXISTS temp_lob(

          ID int(11) NOT NULL AUTO_INCREMENT,
          preferenceIDTmp INT(11),
          parentIDTmp INT(11),
          valueTmp varchar(255),
          isAvailableTmp INT(11),
          isChildAvailableTmp INT(11),
          isUserAddedTmp INT(11),
          PRIMARY KEY (ID)     
     );

          SET no_more_prefrences=0;
          OPEN cur;

             dept_loop:WHILE(no_more_prefrences=0) DO

                     FETCH cur INTO lob_preferenceid,lob_parentid,lob_value,lob_isavailable,lob_ischildavailable,lob_isuseradded;
                     IF no_more_prefrences=1 THEN
                        LEAVE dept_loop;
                     END IF;

                                     INSERT  INTO temp_lob(preferenceIDTmp,parentIDTmp,valueTmp,isAvailableTmp,isChildAvailableTmp,isUserAddedTmp)
                                        VALUES  (lob_preferenceid,lob_parentid,lob_value,lob_isavailable,lob_ischildavailable,lob_isuseradded);

                                     CALL get_all_children_of_lob(lob_preferenceid);

             END WHILE dept_loop;

          CLOSE cur;    

END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样,请帮忙:(

Mar*_*lff 5

似乎缺少局部变量声明.

加:

DECLARE no_more_prefrences INT;
Run Code Online (Sandbox Code Playgroud)