3

嗨,我在 mysql 中使用存储过程

当我尝试

 DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_prefrences=1 ;

并尝试编译,它在 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 ;

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

4

1 回答 1

7

似乎缺少局部变量声明。

添加:

DECLARE no_more_prefrences INT;
于 2012-07-25T07:17:23.130 回答