0

我有很多stored procedures正在生产中,但没有functions

这里在 MSDN 中是CREATE FUNCTION. 它说:

在 SQL Server 2012 中创建用户定义函数。用户定义函数是 Transact-SQL 或公共语言运行时 (CLR) 例程,它接受参数、执行操作(例如复杂计算)并返回该操作的结果作为一个值。返回值可以是标量(单个)值或表。使用此语句创建一个可重用的例程,该例程可以通过以下方式使用:

我的存储过程似乎已经实现了上述所有功能。

当一个人选择 afunction而不是 a时,确定的情况是stored procedure什么?

4

1 回答 1

3

当您想要将结果集成为更大查询的一部分时。

例如,您可以joincross apply表值函数,并且您可以为结果中的每一行评估一个标量 UDF(小心,因为这可能会影响性能)。

对于存储过程,您需要执行它们并将结果捕获到临时表等中,以便能够在更广泛的查询中加入它,并且需要游标或类似物来模拟标量 UDF 行为并为每一行执行它。

于 2013-03-26T07:57:11.110 回答