Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Не корректно работает процедура. В чем ошибка (Aco) 30/04/2008 - 10:06:39
      Re: Не корректно работает процедура. В чем ошибка (Вадим) 04/05/2008 - 19:44:37



From: Aco - 30/04/2008 - 10:06:39
Subject:Не корректно работает процедура. В чем ошибка
-----------------


Доброго времени суток!
Есть иерархиескаия таблица:
Код:

CREATE TABLE `tree` (
`item_id` int(11) unsigned NOT NULL auto_increment,
`parent_id` int(11) default NULL,
`descr` varchar(64) default NULL,
`some_data` tinytext,
PRIMARY KEY (`item_id`)
) ENGINE=MyISAM

Заполненая следующим образом
Код:

INSERT INTO `tree` (`item_id`,`parent_id`,`descr`,`some_data`) VALUES
(1,'0','root','The start'),
(2,'1','level 1','2'),
(3,'1','level 1','3'),
(4,'3','level 2','4'),
(5,'4','level 3','5'),
(6,'2','level 2','6'),
(7,'3','level 2','7'),
(8,'2','level 2','8'),
(9,'8','level 3','9'),
(10,'1','level 1','10'),
(11,'10','level 2','11'),
(12,'6','level 3','12'),
(13,'11','level 3','13'),
(14,'4','level 3','14'),
(15,'7','level 3','15'),
(16,'12','appendix','The end');

Есть следующая процедура. В неё передаётся item_id любого элемента и она выбирает клиенту все элементы от этого item_id до root.
Код:

DELIMITER $$
DROP PROCEDURE IF EXISTS `fromItemToRoot` $$
CREATE PROCEDURE `fromItemToRoot` (IN _item_id INT)
BEGIN
WHILE _item_id > 0 DO
SELECT * FROM `tree` WHERE `item_id` = _item_id;
SELECT parent_id INTO _item_id FROM `tree` WHERE `item_id` = _item_id;
#SELECT _item_id;
END WHILE;
END $$
DELIMITER ;

Проблема в том что, передавая, например, _item_id = 16, WHILE делает только одну итерацию, хотя по окончанию первой итерации _item_id = 12. Почему так? Как заставить его делать все итерации?



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
33513



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |