0

このエラーが発生します:

ステートメントが完了する前に、最大再帰100が使い果たされました

この関数を実行すると:

    WITH allDays AS (

        SELECT @DateEarly AS date

        UNION ALL

        SELECT DATEADD(dd, 1, date) as date
        FROM allDays s  
        WHERE DATEADD(dd, 1, date) <= @DateLate


   )
    SELECT *
    from allDays 
    where dbo.isFestivo(date)>0

私はこのオプションを追加しようとしました:

OPTION (MAXRECURSION 200);

しかし、「オプション」という単語の前にエラー156が表示されます。なぜなのかご存知ですか?

4

1 に答える 1

7

オプションを間違った場所に置いている可能性があります。それはどこの後にある必要があります

WITH allDays AS (
    SELECT @DateEarly AS date
    UNION ALL
    SELECT DATEADD(dd, 1, date) as date
    FROM allDays s  
    WHERE DATEADD(dd, 1, date) <= @DateLate
)
SELECT *
from allDays 
where dbo.isFestivo(date)>0
option (maxrecursion 200);

しかし、代わりにこれを試してください。早くなります...

select DATEADD(d, number, @dateearly) as [date]
from master..spt_values 
where type='p'
and number<=datediff(d,@dateearly,@datelate)
and dbo.isFestivo(date)>0
于 2012-11-15T11:25:03.260 に答える