Код, итеративно обновляющий уровни иерархии в таблице товаров Products
— Инициализация всех строк таблицы UPDATE Products SET HierarchyLevel = NULL — Создание якоря: обновить самые верхние строки UPDATE Products SET HierarchyLevel = 1 WHERE ParentId IS NULL — Итеративное обновление нижних уровней DECLARE @CurrentHierarchyLevel AS _ smallint DECLARE @NumOfRecordsUpdated AS int SELECT @CurrentHierarchyLevel = 1 SELECT @NumOfRecordsUpdated = 1 — Проверка начала итерации WHILE ((@CurrentHierarchyLevel < 255) — Проверка отсутствия бесконечного цикла AND (@NumOfRecordsUpdated > 0)) — прекращение итерации при отсутствии изменений BEGIN UPDATE T1 SET HierarchyLevel = _ @CurrenthierarchyLevel + 1 FROM Products PChild, Products PParent WHERE PChild.ParentId = _ PParent.Id AND PParent.HierarchyLevel = _ @CurrentHierarchyLevel — Получение количества записей, измененных при обновлении SELECT @NumOfRecordsUpdated = _ @@RowCount SELECT @CurrentHierarchyLevel = _ @CurrentHierarchyLevel + 1 END — WHILE END