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