本文描述了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中存储过程和用户定义函数的区别
推荐阅读
-
【风云一点通】你怎么看?,我国在不到一个月的时间里两次航天发射失败
-
意大利■疫情加重意大利四处求助,欧盟沉默美国无视,俄军9架运输机驰援
-
为啥很多人穿有鞋带的鞋子,每天脱鞋穿鞋,直接硬塞,而不是解鞋带系鞋带?
-
华为荣耀|一加氢OS11发布:以前系统简陋欠下的债,现在要开始还了
-
北汽幻速|迈巴赫S级和奔驰S级出事故,同时被幻速S2追尾,对方还是实线变道
-
纪录中国docucn|感受作品能量,关注丨“全白玉兰奖”评委阵容亮相——注重故事品质
-
当红女星|32岁女主播与师父恋爱,分手后看到诊断书慌了:我该怎么办?
-
-
-
太平公主秘史武则天为什么不喜欢安公主?太平公主跟武则天的关系_1
-
股东|ST舍得:天洋控股所持公司控股股东股权被冻结
-
-
中方|美国驻成都总领馆闭馆 中方从正门进入实行接管
-
-
忧家娱乐:国内有进出口资质企业仅190家,海外疫情爆发防护服成“救命服”
-
长江直播|将第一时间提醒考生及家长,中考考点4个渍水高风险区域公布
-
国民闺蜜|杨超越脑洞真清奇!别人劈叉厉害时,没想到她的关注点永远是这个
-
美丽探索|去世时仅66岁,“建筑女魔头”扎哈?哈迪德:北京大兴机场设计者
-
公司|注册制带来科技股结构牛A股须培育优秀科技公司
-
中新经纬|道指收跌1.51%失守26000点 中概股蔚来汽车再涨15%