MySQL5.5のストアドプロシージャに問題があります。これは、手順が機能しなければならないテーブルです。
Table `diba`:
----------------------------------------------------
Column | Type | Null | Default | Links to
----------------------------------------------------
ParentID | int(11) | No | | articoli -> id
ChildID | int(11) | No | | articoli -> id
Quantity | int(11) | No |
lvl | int(11) | No | 0
これは手順そのものです。
DELIMITER //
CREATE PROCEDURE RenumberLevels()
DETERMINISTIC
BEGIN
DECLARE lvl_counter INT;
SET lvl_counter = 1;
UPDATE `diba` SET `diba`.`lvl` = CASE WHEN `diba`.`ParentID` IS NULL THEN 1 ELSE 0 END;
WHILE EXISTS (SELECT * FROM `diba` WHERE `diba`.`lvl` = 0) DO
UPDATE `diba` SET `diba`.`lvl` = lvl_counter +1 WHERE (SELECT `D2`.`lvl` FROM `diba` AS D2
WHERE D2.ChildID = `diba`.`ParentID`) > 0 AND `diba`.`lvl` = 0;
SET `diba`.`lvl` = lvl_counter + 1;
END WHILE;
END//
DELIMITER ;
結果のエラーは次のとおりです。
#1193 - Unknown system variable 'lvl'
この手順の何が問題になっていますか?