何时创建函数而不是过程

时间:2013-03-26 07:53:59

标签: sql-server

我有很多stored procedures正在制作但没有functions

MSDN中的定义是CREATE FUNCTION。它说:

  

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

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

当选择function而不是stored procedure时,有什么确定的情况?

1 个答案:

答案 0 :(得分:3)

如果要将结果集成为较大查询的一部分。

e.g。您可以joincross apply表值函数,并且可以为结果中的每一行计算标量UDF(小心,因为这可能会影响性能)。

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