本文描述了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中存储过程和用户定义函数的区别
推荐阅读
-
奥拉罗尤|奥拉罗尤这一举动太燃了,江苏苏宁又迎重大利好,剑指中超冠军
-
宁德|宁德交警提醒您:飙车一时爽,车进报废场,抓你没商量……
-
nba季后赛|NBA季后赛激战正酣!东部悬念不大,西部一片惨烈!
-
延迟退休倒计时:65岁还是80岁?艾沐茵火热背后有何逻辑
-
-
男子持铁锹当街暴打老人小孩|男子持铁锹当街暴打老人小孩 打人者是孩子舅爷
-
-
-
『香菜讲科技』160 万美元买下史上最危险域名,僵持 26 年后,微软终于以
-
美容|69岁布丽吉特爱折腾,接受整容瞬间变漂亮,每年美容费高达百万
-
交易报告|因未按规定报送可疑交易报告等 建行福建省分行被罚314万元
-
王鹤棣|24岁王鹤棣:从18线小偶像跻身为顶流男星,他究竟凭什么
-
美甲|“脚趾被钢管砸了,有什么办法好的快?”哈哈哈新做的美甲?
-
朱主爱▲《创造营3》朱主爱舞蹈零起步,团队互相鼓励,陈卓璇让出C位
-
游戏日报|进攻基本透明的传统内线,如何靠防守立足,NBA2K:贫民玩家福音
-
中国新闻网|美国疫情形势严峻 美财长:重启经济绝不后悔
-
「小米科技」iQOO3、小米10成首批降价骁龙865,哪款更好呢?
-
吴刚伐桂|中秋说月:月中有嫦娥、玉兔、蟾蜍、吴刚,吴刚为什么砍的是桂树
-
[往来游戏]TES辅助成下一宝蓝?网友:自求多福!,阿水痛失LPL冠军
-