2016-04-28 20 views
0

嘗試調用遞歸標量函數時出現以下錯誤。選項(maxrecursion 0)不適用於SQLServer 2008 R2中的遞歸標量函數

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

嗨,Ed,感謝您的快速回復。我無法將嵌套級別限制在32以下。我將嘗試使用遞歸cte對其進行編碼。 –