我在cte中使用了一个变量值,但它将进入一个无限循环,当我硬编码时,值就像“food”而不是variable @ProductSection
,它正在执行:
DECLARE @ProductSection varchar(100) = (SELECT ProductSection FROM Product WHERE ProductId = 6572);
WITH DirectIndirectProd (ProdId,ReporteeID ,NAME, [Level],[Root])
AS
(
SELECT ProdId,
ReporteeID,
NAME,
0 AS [Level] ,
RootHS AS [Root]
FROM Product
WHERE SECTION_CD = @ProductSection
UNION ALL
SELECT P1.ProdId,
P1.Report,
P1.FNAME,
[Level] + 1 , d.[Root]
FROM Product P1
INNER JOIN DirectIndirectProd AS D
ON P1.Rpt_PrdID = D.ProdID
)
请帮助我在这个查询中,我做了错误的声明变量值?
1条答案
按热度按时间kyxcudwk1#
您的代码中似乎有循环。这可能很难处理。但是你可以通过添加以下内容来看到发生了什么:
看看发生了什么。
一个微不足道的例子是
Rpt_PrdID = ProdID
. 然而,还有其他的可能性。如果这是一个问题,我建议你问一个新的问题与适当的样本数据和预期的结果。设置某种小提琴对这类问题也很有帮助。