2
您好,我正在使用MySQL的DECLARE CONTINUE處理程序設定找不到變量不工作
一個存儲過程,當我嘗試
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 ;
我不知道爲什麼會出現這種情況,請幫助:(