SQL Server中存储过程和函数的区别

30 浏览
0 Comments

SQL Server中存储过程和函数的区别

何时应该在SQL中使用函数而不是存储过程?它们各自的作用是什么?

admin 更改状态以发布 2023年5月25日
0
0 Comments

以下是总结差异的表格:

存储过程 函数
返回值 零个或多个值 单个值(可以是标量或表)
能否使用事务? 可以 不可以
能否输出到参数? 可以 不可以
是否可以互相调用? 可以调用函数 不可以调用存储过程
是否可以在SELECT、WHERE和HAVING语句中使用? 不可以 可以
是否支持异常处理(通过try/catch)? 可以 不可以
0
0 Comments

函数是计算出来的值,不能对 SQL Server 进行永久性的环境变更(即不允许使用 INSERTUPDATE 语句)。

如果函数返回一个标量值,则可以在 SQL 语句中内联使用它,如果返回结果集,则可以进行连接。

值得注意的一点是,以下摘自评论的总结。感谢 @Sean K Anderson:

函数遵循计算机科学的定义,它们必须返回一个值,并且不能修改它们作为参数(即参数)所接收的数据。函数不允许改变任何内容,必须至少有一个参数,必须返回一个值。存储的过程不必具有参数,可以更改数据库对象,并且不必返回一个值。

0