尝试调用递归标量函数时出现以下错误。
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-02-01')每个月递归调用自身(仅限于其返回0的最大日期)。当最长日期超过32个月时,我收到上述错误。
我不确定这里有什么问题?函数可以在少于32个月的数据(31个递归调用)中正常工作。
答案 0 :(得分:7)
OPTION (maxrecursion 0)
适用于递归公用表表达式(CTE)。存储过程,函数,触发器和视图的嵌套限制硬编码为32级,无法增加。您需要重新设计代码以将嵌套级别限制为小于32。
递归CTE可能是嵌套函数调用的可行替代方法。