存储过程(Stored Procedure)

存储过程只不过是您事先保存好的SQL代码而已,您可以反复利用该代码。
如果您一遍又一各处写一个查询,而又不想每次都写该查询,则可以将其保存为存储过程,然后只需调用该存储过程即可。

除了反复运行相同的SQL代码之外,您还可以向存储过程通报参数,因此根据须要,存储过程可以根据通报的参数值进行相应的操作。

phpsqlserver存储过程聊一聊SQL Server中存储进程和函数的差别 Ruby

存储过程也可以提高性能,许多任务被实现为一系列SQL语句。
运用于第一个SQL语句的结果的条件逻辑确定实行哪些后续SQL语句,如果将这些SQL语句和条件逻辑写入存储过程,则它们将成为做事器上单个实行操持的一部分,无需将结果返回给客户端即可运用条件逻辑,所有事情都在做事器上完成。

存储过程的好处

预编译的实行

SQL Server将每个存储过程编译一次,然后重用实行操持。
在重复调用存储过程时,这会极大地提高性能。

减少了客户端/做事器的流量

如果在您的环境中须要考虑网络带宽,那么您会很高兴地理解到存储过程可以将长SQL查询减少到通过网络传输的单行。

高效地重用代码和编程抽象

存储过程可以由多个用户和客户端程序利用。
如果您有操持地利用它们,那么您会创造开拓周期所需的韶光更少。

增强的安全掌握

您可以付与用户独立于根本表权限实行存储过程的权限。

用户定义函数(User Defined Functions)

与编程措辞中的函数一样,SQL Server用户定义函数是接管参数、实行操作(比如繁芜打算)并返回该操作结果的例程。
返回值可以是单个标量值,也可以是结果集。

程序设计措辞中的函数是用来封装常常实行的逻辑的子程序。
任何必须实行合并到函数中的逻辑的代码都可以调用该函数,而不必重复所有的函数逻辑。

SQL Server支持两种类型的函数

内置函数

按照Transact-SQL参考中的定义进行操作,无法进行修正。
只能利用Transact-SQL参考中定义的语法在Transact-SQL语句中引用这些函数。

用户定义函数

许可利用CREATE FUNCTION语句定义自己的Transact-SQL函数。
用户定义的函数利用零个或多个输入参数,并返回单个值。
一些用户定义的函数返回单个标量数据值,例如int、char或decimal值。

用户定义函数的好处

它们许可模块化编程

您可以只创建一次函数,将其存储在数据库中,并在程序中多次调用它。
用户定义的函数可以独立于程序源代码进行修正。

它们可以更快地实行

与存储过程类似,Transact-SQL用户定义的函数通过缓存操持并重用它们进行重复实行,降落了Transact-SQL代码的编译本钱。
这意味着用户定义的函数不须要在每次利用时重新解析和优化,从而大大加快实行速率。
对付打算任务、字符串操作和业务逻辑,CLR函数比Transact-SQL函数供应了显著的性能上风。
Transact-SQL函数更适宜数据访问密集型逻辑。

它们可以减少网络流量

可以将无法基于单个标量表达式表达的繁芜约束条件过滤数据的操作表示为一个函数。
然后可以在WHERE子句中调用该函数,以减少发送给客户真个行数。

SQL Server中存储过程和用户定义函数的差异

SQL Server中存储过程和用户定义函数的差异