SQL Server的存储过程

Kopei article

简介

SQL Server 的存储过程是微软基于 ANSI SQL 的扩展,和其他数据库的过程类似是一组或多组事务性 SQL 语句。它的特点是:

  • 接受多个输入参数,可以返回多个值。
  • 包含编程语句用于操作数据库,包括调用其他存储过程。
  • 返回调用成功与否的状态。

使用存储过程的好处

  • 减少服务端、客户端的网络流量, 存储过程的代码是一次性批量传输给服务端,不像普通语句是一行一次传输给客户端,这样减少了网络流量。
  • 更安全, 不同的用户和客户端可以运行存储过程操作底层的数据库对象,即便这个用户没有底层对象的权限。(减少了单独对用户的授权的便捷性,但是更安全了?)EXECUTE AS语句用来作为执行过程用户。存储过程是可以被加密的。
  • 复用代码
  • 更容易维护
  • 更好的性能,因为第一次运行后执行计划会被保留。

存储过程的类型

  • 自定义 用户自定义的存储过程可以用于所有数据库(除了 Resource 数据库).
  • 临时 临时存储过程也是一种用户自定义过程,存储在tempdb库中,它的生命周期就是连接的时间。临时存储过程又分为localglobal, 它们的区别在于名字、可见性和可用性。local存储过程以#开头命名,只对当前连接用户可见,连接关闭将删除过程。global存储过程以##命名开头,这个过程创建后对所有用户可见,当最后一个会话关闭后将删除过程。
  • 系统 系统存储过程存储在Resource数据库,逻辑上以sys表出现。另外msdb数据库也有系统存储过程存在dbo表中,用于调度警告和任务。一般系统存储过程以sp_命名开头。用户可以扩展系统存储过程,一般以xp_命名开头,见官网资料 [https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/general-extended-stored-procedures-transact-sql?view=sql-server-2017] (General Extended Stored Procedures)
  • 扩展自定义 用户可以使用 C 语言来创建外部 DLL,不过为了将来的兼容性不建议使用。
  • Post title:SQL Server的存储过程
  • Post author:Kopei
  • Create time:2021-02-01 00:00:00
  • Post link:https://kopei.github.io/2021/01/31/database-SQL-Server-2021-2-1-SQL-Server的存储过程/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments
On this page
SQL Server的存储过程