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 に答える