2010-07-28 198 views
1

我有耗尽的100默认MAXRECURSION限制给我下面的错误消息的查询:如何以及在哪里设置MAXRECURSION选项?

声明终止。报表完成前,最大递归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 
+0

加布:如果您运行上面的查询,你会得到最大递归100因为范围是200-500之间。如果您删除此选择,它会很好地工作。所以唯一的选择是使用OPTION(MAXRECURSION 1000),但每次我把这个声明放在我认为会发生的事情旁边:抱怨:在关键词'OPTION'附近的语法不正确。我修改了这个问题。 – dcpartners 2010-07-28 03:45:20

回答

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) 
+2

没有意识到我需要把最后的选择陈述。 :)我试图把里面的CTE或选项卡部分。谢谢 – dcpartners 2010-07-28 04:05:51

+0

希望它适合你。祝你好运。 – bobs 2010-07-28 04:10:37

相关问题