我正在写在SQL Server 2005的存储过程声明了一个名为CTE(公共表表达式) foo
。
foo
递归调用自己,却又无限循环,当SP的参数(之一@bar
)为空。
为了制止这种无限循环,我一直在试图使用选项MAXRECURSION
:
- 当
@bar
为空,设置MAXRECURSION为1; - 当
@bar
不为空,设置MAXRECURSION为0(没有限制)。
所以我声明的局部变量@maxrec
这需要取决于是否1或0 @bar
为空或不是。
DECLARE @maxrec INT;
SET @maxrec = 0;
if (@dim_course_categories is null)
begin
SET @maxrec = 1;
end
;WITH foo AS (
...
)
SELECT * FROM foo
OPTION (MAXRECURSION @maxrec)
当我解析的代码,我得到以下错误: Incorrect syntax near '@maxrec'.
,这指的是线路OPTION (MAXRECURSION @localvar)
所以我在做什么错? 难道是禁止的OPTION子句中使用局部变量?