如何以及在何处设置 MAXRECURSION 选项?

dcp*_*ers 4 t-sql sql-server

我有一个查询,它耗尽了MAXRECURSION100的默认限制。给我以下错误消息:

声明终止。在语句完成之前,最大递归 100 已用完。

我发现我需要提高这个 CTE 的使用限制,OPTION (MAXRECURSION xxx)但我不知道把它放在哪里。

到目前为止,我已经尝试将它放在我定义 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
Run Code Online (Sandbox Code Playgroud)

bob*_*obs 7

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)
Run Code Online (Sandbox Code Playgroud)

  • 没有意识到我需要放在最后一个选择语句下。:) 我试图放在 CTE 或 TAB 部分。谢谢 (2认同)