2010-07-28 196 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

相關問題