2016-04-28 6 views
0

再帰的なスカラー関数を呼び出そうとすると、次のエラーが発生します。SQLServer 2008 R2の再帰スカラー関数でOPTION(maxrecursion 0)が機能しない

Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32). 

私は電話を機能させるOPTION(MAXRECURSION 0)を追加した場合でも、それは同じエラー

SELECT dbo.fn_CalculateTotal('2015-02-01') OPTION (maxrecursion 0) ; 

dbo.fn_CalculateTotal( '2015年2月1日')は再帰的に月ごとに自分自身を呼び出す生成(0を返す最大日付まで)。最大の日付が32ヶ月以上離れている場合、上記のエラーが発生しています。

ここで何が間違っているのですか? 32ヶ月未満のデータ(31回の再帰呼び出し)で正常に機能します。

答えて

7

OPTION (maxrecursion 0)は、再帰共通テーブル式(CTE)に適用されます。ストアドプロシージャ、ファンクション、トリガ、およびビューのネスト制限は32レベルにハードコードされており、増やすことはできません。ネストレベルを32未満に制限するためにコードを再設計する必要があります。

ネストされた関数呼び出しの実行可能なCTEが実行可能な可能性があります。

+0

こんにちはエド、クイック応答ありがとう。私はネストレベルを32未満に制限することはできません。私は再帰的なcteでそれをコードしようとします。 –

関連する問題