CftClub.ru
Клуб специалистов ЦФТ-Банк

Рекурсия

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
ict_2010
Участник со стажем


Вступление в Клуб: 25.03.2015
СообщениеЧт Май 07, 2015 08:21   Рекурсия Ответить с цитатой
Полезность: Нет оценки
Подскажите как реализовать в цфт рекурсию в запросе?
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеЧт Май 07, 2015 08:31    Ответить с цитатой
Полезность: Нет оценки
покажите пример, как вы реализуете рекурсию в sql запросе без цфт?
ict_2010
Участник со стажем


Вступление в Клуб: 25.03.2015
СообщениеЧт Май 07, 2015 08:43    Ответить с цитатой
Полезность: Нет оценки
prog пишет:
покажите пример, как вы реализуете рекурсию в sql запросе без цфт?

Фрагмент кода которую хочу рекурсивно реализовать в цфт
procedure proc1 is
begin
for(
select r
(r : r_id,
r.[rr]:rr)
in [table] where r = r%id)
loop
for(
select r
(r2 : r2_id,
r2.[rr]:rr2)
in [table] where r.r_id = r2.rr2)
loop
for(
select r
(r3 : r3_id,
r3.[rr]:rr3)
in [table] where r2.r_id = r3.rr3)
loop
----------
end loop;
end loop;
end loop;
end;
вместо того чтоб запрос повторять как можно реализовать отдельную процедуру чтоб её рекурсивно вызывать в процедуре proc1?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеЧт Май 07, 2015 10:16    Ответить с цитатой
Полезность: 1
ict_2010 пишет:
prog пишет:
ict_2010 пишет:
Подскажите как реализовать в цфт рекурсию в запросе?
покажите пример, как вы реализуете рекурсию в sql запросе без цфт?

Фрагмент кода которую хочу рекурсивно реализовать в цфт ...

Это был сарказм.

В SQL-запросе нельзя организовать рекурсию. Можно организовать иерархический запрос, но рекурсию - невозможно.

Нужно понимать разницу между SQL-запросом и кодом на PL/SQL.

SQL-запрос начинается с ключевых слов select, update, insert, delete или merge.

А то, что вы привели в качестве примера - это как раз PL/SQL-код.

Ну и бонусом ответ на ваш вопрос:
В точности так же, как и во всех остальных языках:

Код:

procedure test(p_level integer := 1) is
begin
  debug_pipe('Выполняется рекурсия, уровень вложенности: '||p_level,0);
  if p_level < 10 then
    test(p_level+1);
  end if;
end;

Ваш Капитан Очевидность.

Что касается иерархического запроса, вот пример:http://cftclub.ru/viewtopic.php?t=3998&highlight=
ict_2010
Участник со стажем


Вступление в Клуб: 25.03.2015
СообщениеЧт Май 07, 2015 13:43    Ответить с цитатой
Полезность: Нет оценки
тема закрыта, проблема решена
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru