无法识别对存储过程调用的表值函数的更改吗?

无法识别对存储过程调用的表值函数的更改吗?

问题描述:

我有一个调用表值函数tvf的存储过程sp。有时我修改tvf,但是当后续执行sp时,sp的输出与修改之前的输出相同。它似乎被缓存或编译或其他东西。如果我对sp进行了一些虚拟变化,那么我得到sp的正确输出。无法识别对存储过程调用的表值函数的更改吗?

有没有办法,我可以克服这个问题?在Oracle中可以重新编译所有的存储过程,但我一直无法弄清楚如何在SQL Server中执行此操作?

任何帮助,高度赞赏。

+0

更改对象(例如TVF)应该从缓存中清除对象的使用。 – 2010-04-27 07:17:28

+0

你可以张贴UDF和调用TSQL ... – 2010-04-27 07:25:36

+0

不幸的是,它是太大,无法在这里:( – Peter 2010-04-27 12:06:54

您可以使用sp_recompile来重新编译存储过程,但afaik,你描述的不应该发生。

你能发布udf吗?无论输入参数如何,我只能想到的情况是udf总是返回相同的结果。

+0

感谢你非常及时的回复! 的UDF是相当复杂的,所以我不希望你有能量去实际看它,但无论如何这里是......哦,这是大约5000个字符太长,以适应在这里:)我会看看如果我能用一些更简单的例子来重现此行为。 但我没有这样做 - 我已经观察了好几次... 我是否必须为每个存储过程使用sp_recompile,或者我可以以某种方式使它重新编译我的所有存储过程? – Peter 2010-04-27 07:38:28

+0

我将使用* SELECT'sp_recompile'+ name FROM sys.procedures *的输出重新编译所有存储过程。 – 2010-04-27 07:50:37