无法在cte内使用变量值

wswtfjt7  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(377)

我在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  
  )

请帮助我在这个查询中,我做了错误的声明变量值?

kyxcudwk

kyxcudwk1#

您的代码中似乎有循环。这可能很难处理。但是你可以通过添加以下内容来看到发生了什么:

where level < 10

看看发生了什么。
一个微不足道的例子是 Rpt_PrdID = ProdID . 然而,还有其他的可能性。
如果这是一个问题,我建议你问一个新的问题与适当的样本数据和预期的结果。设置某种小提琴对这类问题也很有帮助。

相关问题