我已经写了一个公用表表达式来返回层次信息,如果我将值硬编码到WHERE
语句中,它似乎可以正常工作。如果我使用变量(即使该变量包含与硬编码值相同的信息),也会收到错误The maximum recursion 100 has been exhausted before statement completion.
通过一个简单的示例就可以更容易地看到它(注意,我没有包括CTE的实际代码只是为了使事情更清楚。如果您认为它有用,我当然可以添加它)。
这有效
WITH Blder
AS
(-- CODE IS HERE )
SELECT
*
FROM Blder as b
WHERE b.PartNo = 'ABCDE';
这会引发“最大递归错误”
DECLARE @part CHAR(25);
SET @part = 'ABCDE'
WITH Blder
AS
(-- CODE IS HERE )
SELECT
*
FROM Blder as b
WHERE b.PartNo = @part;
我想念一些愚蠢的东西吗?还是在这种情况下,SQL引擎会以不同方式处理硬编码值和参数值?
答案 0 :(得分:0)
请将分号放在变量赋值语句的末尾
SET @part ='ABCDE';