Как и где я могу установить опцию MAXRECURSION? - PullRequest
1 голос
/ 28 июля 2010

У меня есть запрос, который исчерпывает ограничение по умолчанию MAXRECURSION, равное 100. Дает мне следующее сообщение об ошибке:

Заявление прекращено. Максимальная рекурсия 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

1 Ответ

3 голосов
/ 28 июля 2010
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...