Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工做的一种方法,它支持用户声明的变量、条件执行和其余强大的编程功能。sql
存储过程相对于其余的数据库访问方法有如下的优势:数据库
(1)重复使用。存储过程能够重复使用,从而能够减小数据库开发人员的工做量。编程
(2)提升性能。存储过程在建立的时候就进行了编译,未来使用的时候不用再从新编译。通常的SQL语句每执行一次就须要编译一次,因此使用存储过程提升了效率。安全
(3)减小网络流量。存储过程位于服务器上,调用的时候只须要传递存储过程的名称以及参数就能够了,所以下降了网络传输的数据量。服务器
(4)安全性。参数化的存储过程能够防止SQL注入式的攻击,并且能够将Grant、Deny以及Revoke权限应用于存储过程。网络
存储过程一共分为了三类:用户定义的存储过程、扩展存储过程以及系统存储过程。架构
其中,用户定义的存储过程又分为Transaction-SQL和CLR两种类型。性能
Transaction-SQL 存储过程是指保存的Transaction-SQL语句集合,能够接受和返回用户提供的参数。spa
CLR存储过程是指对.Net Framework公共语言运行时(CLR)方法的引用,能够接受和返回用户提供的参数。他们在.Net Framework程序集中是做为类的公共静态方法实现的。(本文就不做介绍了)ci
建立存储过程的语句以下:
如下为引用的内容: CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] |
[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