本文描述了SQL Server中存储过程和用户定义函数之间的区别 。
存储过程(Stored Procedure)
存储过程只不过是您事先保存好的SQL代码而已,您可以反复使用该代码 。如果您一遍又一遍地写一个查询,而又不想每次都写该查询,则可以将其保存为存储过程,然后只需调用该存储过程即可 。
除了反复运行相同的SQL代码之外,您还可以向存储过程传递参数,因此根据需要,存储过程可以根据传递的参数值进行相应的操作 。
存储过程也可以提高性能,许多任务被实现为一系列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值 。
用户定义函数的好处
您可以只创建一次函数,将其存储在数据库中,并在程序中多次调用它 。用户定义的函数可以独立于程序源代码进行修改 。
【聊一聊SQL Server中存储过程和函数的区别】与存储过程类似,Transact-SQL用户定义的函数通过缓存计划并重用它们进行重复执行,降低了Transact-SQL代码的编译成本 。这意味着用户定义的函数不需要在每次使用时重新解析和优化,从而大大加快执行速度 。对于计算任务、字符串操作和业务逻辑,CLR函数比Transact-SQL函数提供了显著的性能优势 。Transact-SQL函数更适合数据访问密集型逻辑 。
可以将无法基于单个标量表达式表达的复杂约束条件过滤数据的操作表示为一个函数 。然后可以在WHERE子句中调用该函数,以减少发送给客户端的行数 。
SQL Server中存储过程和用户定义函数的区别

文章插图
SQL Server中存储过程和用户定义函数的区别
推荐阅读
-
新民晚报|展商新期待|首次亮相,超速奔跑,这家创新企业带来5大生物制药核心创新成果
-
晨财经|俄央行行长:预计今年第二季度俄GDP将下滑9-10%
-
娱小鱼干|意外曝光女儿正面照,乖巧又可爱,霍建华一家三口七夕与友人聚会
-
【1车族】搭配1.5L发动机,7.84万起售!,全新斯柯达昕锐实车来了
-
BaBa很忙|女婴诞生后,庆祝方式实属夸张,美国家族137年来只生儿子
-
记者|要不是这个中国的科技小玩意儿!东京奥运会记者估计要憋坏了
-
畅娱网络|Doinb不想去还奖杯?网友却表示可以把奖杯直接送给RNG
-
|【健康辟谣日历】女人得痛风的少,可以高枕无忧了?
-
兵器数据库 撑死一年也就130架,为何不能自动化生产?,F-35脉动生产线
-
浩汉防务论坛160轰炸机 别听网友瞎忽悠 人家自己都不够用咋可能卖,买图
-
老赖查询|都给你准备好了,别再百度了!起诉“老赖”需要的材料和步骤
-
-
味精|总是吃不腻的几道家常菜,美味简单营养,解馋下饭,味道超赞
-
李小璐|曾风光无限的内地女星:“视后”无戏可拍,有的直播带货!
-
全员加速中|大侦探8第七案:造型师审美堪忧,全员影楼风,依靠嘉宾颜值撑着
-
小小天看世界@马上重大升级!订票订座聊天很简单,微信该不该紧张?,沦为验证码工具的短信
-
-
于娜■【本号特稿】让春天重返枝头——写给抗疫前线的辽宁医护人员(四)
-
『大嘴的美食』能知道这三条的,绝对是高手,自动挡汽车提速技巧
-
准元|万古神帝:老黄牛半神巅峰,准元会级代表,天赋人比不上牛的悲剧