| 
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| 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 пишет: |  	  | покажите пример, как вы реализуете рекурсию в sql запросе без цфт? 	  | ict_2010 пишет: |  	  | Подскажите как реализовать в цфт рекурсию в запросе? | 
 | 
 Фрагмент кода которую хочу рекурсивно реализовать в цфт ...
 | 
 Это был сарказм.
 
 В 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    |   |  
				| Полезность: Нет оценки 
 |  
				| тема закрыта, проблема решена |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  |