CREATE PROC HierarchyChart (@ID int, @ID_User int)
AS BEGIN
WITH tree(ID_Key, Parent_Index, Item_Level, Item_Name)
AS (SELECT IDKey, ParentIndex, ItemLevel, ItemName
FROM base
WHERE IDKey = @ID
UNION ALL
SELECT Base.IDKey, Base.ParentIndex, Base.ItemLevel, Base.ItemName
FROM base AS Base INNER JOIN
tree AS tr ON tr.Parent_Index = Base.IDKey)
SELECT tree.Parent_Index,tree.ID_Key, tree.Item_Level, tree.Item_Name, Users.Id, PermissonType.Id AS Per_Id, PermissonType.PermissionType
FROM Users INNER JOIN
PermissionRecord ON Users.Id = PermissionRecord.Id_User INNER JOIN
tree AS tree ON PermissionRecord.Id_Base = tree.ID_Key INNER JOIN
PermissonType ON PermissionRecord.Id_PermissionType = PermissonType.Id
WHERE Users.Id = @ID_User
END
Переписать запрос с MSSQL Server2005 на Server2000
Код:
попробовал вставить его в MS SQL Server 2000 выдает 2 ошибки:
1. Incorrect syntax near the keyword 'WITH'.
2. Incorrect syntax near the keyword 'END'.
Как поправить?
Вообще, в 2000 сервере возможны подобные рекурсии?
Сдается мне, что 2000 версия еще не поддерживала рекурсивные конструкции. Попробуйте почитать вот эту статейку (а также ссылочки, которые приведеные в конце). Рассматриваются некоторые "обходные" варианты написания рекурсивных запросов.
Также воспользуйтесь форумом sql.ru, там эта тема также обсуждалась.
Удачи