【发布时间】:2017-01-26 22:25:25
【问题描述】:
我有一个查询用尽了默认的 MAXRECURSION 限制 100。给我以下错误消息:
语句终止。在语句完成之前,最大递归 100 已用完。
我发现我需要使用OPTION (MAXRECURSION xxx) 提高此 CTE 的限制,但我不知道该放在哪里。
到目前为止,我已尝试将它放在我定义 CTE 的位置旁边,但它不起作用。我也尝试了几个不同的地方,它也不起作用。我每次得到的错误是:
关键字“OPTION”附近的语法不正确。
那么我应该将OPTION (MAXRECURSION XXX) 命令放在我的SQL 中的什么位置?
with
tab (id,start,en) AS (
SELECT 1, 100, 200
UNION ALL SELECT 2, 200, 500
),
cte (id,start,en) AS (
SELECT id, start, en FROM tab
UNION ALL
SELECT id, start+1, en FROM cte WHERE start+1 <= en
)
SELECT id, start
FROM cte
ORDER BY id
【问题讨论】:
-
Gabe:如果你运行上面的查询,你会得到递归最大值 100,因为范围在 200-500 之间。如果您删除此选择,它会很好地工作。所以唯一的选择就是使用 OPTION (MAXRECURSION 1000) 但每次我把这个语句放在我认为会抱怨的东西旁边时都会抱怨:关键字“OPTION”附近的语法不正确。我已经修改了问题。
标签: sql-server tsql