Рекурсивная работа с деревьями

Модераторы: kdv, CyberMax

Ответить
Guardian777
Сообщения: 33
Зарегистрирован: 09 июл 2009, 14:57

Рекурсивная работа с деревьями

Сообщение Guardian777 » 23 окт 2009, 16:41

Использую Firebird 1.5
Windows Xp Prof
Написал процедуру которая делает выборку конкретной ветки из дерева, но почему то результатом выполнения является только 2 уровня вложения.
Вот ее код

Код: Выделить всё

create procedure LOAD_TREE (
    KODGR integer) 
returns (
    KOD_GROUP integer,
    NAMEGROUP varchar(60) character set WIN1251,
    VHOD integer) 
as
begin
  Select kodgroup,namegroup,vhod from group where kodgroup = :kodgr
   into  :kod_group,:namegroup,:vhod;
      suspend;

    for select kodgroup,namegroup,vhod from group where (vhod = :kodgr)
        into  :kod_group,:namegroup,:vhod do
      begin
        execute procedure load_tree(:kod_group) returning_values  :kod_group,:namegroup,:vhod;
        suspend;
      end

end

Вот таблица

Код: Выделить всё

 TABLE GROUP (
    KODGROUP  INTEGER NOT NULL,
    NAMEGROUP      VARCHAR(100),
    VHOD           INTEGER )
При просмотре ее работы через отладчик в IBExperte видно что она заходит в дочернии но их в конечном запросе не появляется.
В чем может быть проблема ?
Заранее благодарю за ответ

Guardian777
Сообщения: 33
Зарегистрирован: 09 июл 2009, 14:57

Re: Рекурсивная работа с деревьями

Сообщение Guardian777 » 23 окт 2009, 17:01

Вопрос снят.
Продерура отрабатывает вот в таком исполнении:

Код: Выделить всё

create procedure LOAD_TREE (
    KODGR integer) 
returns (
    KOD_GROUP integer,
    NAMEGROUP varchar(60) character set WIN1251,
    VHOD integer) 
as
begin
  Select kodgroup,namegroup,vhod from group where kodgroup = :kodgr
   into  :kod_group,:namegroup,:vhod;
      suspend;

    for select kodgroup from group where (vhod = :kodgr)
        into  :kod_group do
      begin
      for select * from load_tree(:kod_group) Into  :kod_group,:namegroup,:vhod do suspend;
      end
end

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Рекурсивная работа с деревьями

Сообщение kdv » 23 окт 2009, 17:54


Ответить