Реферат: Новые возможности T-SQL в MS SQL Server 2005

--------------------------------------------------

1 Parent1 0 1

2 Parent2 0 1

3 Child1 1 2

4 Child11 3 3

5 Child12 3 3

Общий принцип построения рекурсивного выражения

WITH ИмяCTE (Определение) AS

(

SELECT … -- Выборка с начальным условием,

UNION ALL -– Объединение результатов

SELECT … -- Выборка определяющаяя шаг рекурсии

INNER JOIN CTE.ДочернийID = ИмяТаблицы.РодительскийID –- Присоединение «по родителю»

)

Без использования виртуального представления, для достижения того же результата придется написать значительно более сложный запрос:

DECLARE @CurrentID int

DECLARE @Level int

SELECT TOP(1) @CurrentID = BrandID FROM Brands ORDER BY BrandID

DECLARE @StackTable TABLE (ID int, Level int)

DECLARE @OutputTable TABLE (ID int, [Name] nvarchar(32), ParentID int, Level int)

INSERT INTO @StackTable VALUES(@CurrentID, 1)

SET @Level = 1

WHILE @Level > 0

BEGIN

IF EXISTS (SELECT * FROM @StackTable WHERE Level = @Level)

BEGIN

SELECT @CurrentID = ID FROM @StackTable WHERE Level = @Level

INSERT INTO @OutputTable

SELECT BrandID, [Name], ParentID, @Level AS Level FROM Brands

К-во Просмотров: 551
Бесплатно скачать Реферат: Новые возможности T-SQL в MS SQL Server 2005