SQL错误:超过最大存储过程、函数、触发器或视图嵌套级别

SQL错误:超过最大存储过程、函数、触发器或视图嵌套级别,sql,sql-server,function,tsql,where,Sql,Sql Server,Function,Tsql,Where,我想根据我选择的日期显示数据,[fnDateTxtToWeekNum]将返回我选择的日期的周数,周数是[fnbergerkdata]的参数,所有可用的周数信息存储在dbo.Weeks表中 我得到这个错误: 最大存储过程、函数、触发器或视图嵌套级别 超出(限制32)。” 是因为我引用了weeknum两次,并且函数调用了self吗?fnbergerkdata上的@weeknum引用的是dbo.weeks(基本上如果没有where子句,这个SQL将返回所有周的所有数据)。然后我使用fndatetxtt

我想根据我选择的日期显示数据,[fnDateTxtToWeekNum]将返回我选择的日期的周数,周数是[fnbergerkdata]的参数,所有可用的周数信息存储在dbo.Weeks表中

我得到这个错误:

最大存储过程、函数、触发器或视图嵌套级别 超出(限制32)。”

是因为我引用了weeknum两次,并且函数调用了self吗?fnbergerkdata上的@weeknum引用的是dbo.weeks(基本上如果没有where子句,这个SQL将返回所有周的所有数据)。然后我使用fndatetxttoweknum,它将返回一个weeknum,基本上我创建了一个过滤器,这样SQL将只显示我需要的特定星期的数据(将我输入的日期转换为weeknum)


/*我需要最终的输出有weeknum、date、ID和score。FNBecherkData本身不会返回weeknum和date信息,这就是我需要使用cross apply的原因*/

我认为问题可能存在于函数内部。您是否在函数内部使用递归?如果你是,你可能会考虑使用while循环来摆脱它。看起来这里有一个递归问题。

很确定,通过函数调用本身,您已经设置了一个无限循环,除非您没有显示的代码中有部分会破坏循环。@TabAlleman这没有任何意义,最后一行如果我只使用where weeknum=777,SQL将只返回777周的数据。我所做的唯一更改是添加一个函数,将我输入的日期转换为777,但仍然不知道为什么它是无限循环。从您发布的代码片段中无法分辨。您需要发布这两个函数的完整代码。
SELECT  p.weeknum, p.date, q.ID, q.score
FROM dbo.Weeks AS p 
cross apply
[dbo].fnBenchmarkData(p.weeknum) as q 
where weeknum = [dbo].[fnDateTxtToWeekNum]('2015-07-02')