Yar*_*icx 0 sql t-sql sql-server
我尝试将数据获取到@DataSrcCatIds变量。但是 SQL Server 抛出错误
ASSIGNMENT 语句中不允许使用 FOR XML 子句
我用 Google 搜索并找到了解决方案,但该解决方案不使用 CTE。我必须使用公用表表达式对其进行 DataSrcCatIds 。
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)
Run Code Online (Sandbox Code Playgroud)
有点在黑暗中刺伤,但我想你追求的是:
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,'');
Run Code Online (Sandbox Code Playgroud)