我尝试将数据获取到@DataSrcCatIds
变量中。但是SQL Server抛出错误
ASSIGNMENT语句中不允许使用FOR XML子句
我已经搜索过Google,并且找到了解决方案,但是该解决方案未使用CTE。我必须使用通用表表达式来实现它。
CTE有什么解决方案吗?
谢谢
DECLARE @DataSrcCatIds AS NVARCHAR(MAX)
;WITH CatTree (CategoryId ) AS
(
SELECT CategoryId FROM Categories
WHERE SefLink='my-link'
UNION ALL
SELECT ct.CategoryId
FROM Categories ct
INNER JOIN CatTree AS parent ON parent.CategoryId = ct.ParentCatId
)
SELECT @DataSrcCatIds = DataSrcCatIds + ','
FROM Categories c
JOIN CatTree ct ON ct.CategoryId = c.CategoryId
FOR XML PATH ('')
SET @DataSrcCatIds = LEFT(@DataSrcCatIds, LEN(@DataSrcCatIds) - 1)
答案 0 :(得分:4)
在黑暗中有点刺伤,但我假设你在追捕:
DECLARE @DataSrcCatIds AS NVARCHAR(MAX);
WITH CatTree (CategoryId ) AS
(
SELECT CategoryId FROM Categories
WHERE SefLink='my-link'
UNION ALL
SELECT ct.CategoryId
FROM Categories ct
INNER JOIN CatTree as parent ON parent.CategoryId = ct.ParentCatId
)
SELECT @DataSrcCatIds = STUFF((SELECT ',' + DataSrcCatIds
FROM Categories c
JOIN CatTree ct ON ct.CategoryId =c.CategoryId
FOR XML PATH ('')),1,1,'');