こんにちは私は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 ;
なぜこれが起こっているのか分かりません、助けてください:(