我正在 SQL Server 2005 中编写一个存储过程,它声明了一个名为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 子句中使用局部变量?