SQL错误:超出

时间:2015-07-02 15:18:36

标签: sql sql-server function tsql where

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

我收到此错误:

  

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

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')

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

/ *我需要最终输出包括weeknum,date,ID和score。 fnBenchmarkData不会自行返回weeknum和date信息,这就是我需要使用cross apply的原因。 * /

1 个答案:

答案 0 :(得分:0)

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