详解SQLServer 存储过程

网络整理 - 07-27

  Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量、条件执行和其他强大的编程功能。

  存储过程相对于其他的数据库访问方法有以下的优点:

  (1)重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。

  (2)提高性能。存储过程在创建的时候就进行了编译,将来使用的时候不用再重新编译。一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率。

  (3)减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。

  (4)安全性。参数化的存储过程可以防止SQL注入式的攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。

  存储过程一共分为了三类:用户定义的存储过程、扩展存储过程以及系统存储过程。

  其中,用户定义的存储过程又分为Transaction-SQL和CLR两种类型。

  Transaction-SQL 存储过程是指保存的Transaction-SQL语句集合,可以接受和返回用户提供的参数。

  CLR存储过程是指对.Net Framework公共语言运行时(CLR)方法的引用,可以接受和返回用户提供的参数。他们在.Net Framework程序集中是作为类的公共静态方法实现的。(本文就不作介绍了)

以下为引用的内容:

  创建存储过程的语句如下:

  [schema_name]: 代表的是存储过程所属的架构的名称

  例如:

  Create Schema yangyang8848

  Go

  Create Proc yangyang8848.AllGoods

  As Select * From Master_Goods

  Go

  执行:Exec AllGoods 发生错误。

  执行:Exec yangyang8848.AllGoods 正确执行。

  [;Number]: 用于对同名过程进行分组的可选整数。使用一个 DROP PROCEDURE 语句可将这些分组过程一起删除。

  例如:

  Create Proc S1 ;1

  AS

  Select * From Master_Goods

  Go

  Create Proc S1 ;2

  As

  Select * From Master_Location

  Go