我正在 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 子句中使用局部变量?