"Tonal" ...
23.06.2011 13:18, Vlad Khorsun пишет:
Почему бы не ввести специальную конструкцию, для вызова из блока
самого себя?
   Почему бы не пользоваться рекурсивными CTE ?
Как с помощью CTE удалить ветку (если не стоит каскадного удаления)?
Или, например скопировать ветку?
Ещё у меня возникала задача объединения двух веток. Причём в случае
совпадения некоторого атрибута у дочерних их тоже нужно объединять...
А если ещё учесть что к каждому узлу подвешена дополнительная информация
из других таблиц...

   Пиши процедуры для таких задач. По-хорошему советую :)

Что-то я не догоняю как это всё без рекурсии на чистом СТЕ делать.
Буду благодарен за примеры. :)

   delete from ... where id in (with recursive...)

   delete from ... where exists (with recursive...)

   Или, раз уж речь о exec block, то

   for with recursive ... do delete ...;

--
Хорсун Влад

Ответить