我的查询耗尽了默认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
答案 0 :(得分:3)
with tab AS
(
select 1 as id, 100 as start, 200 as en
union all
select 2, 200, 500),
cte 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
OPTION (MAXRECURSION 1000)