存储是数据库开发中经常使用的操作,可以把许多重复的操作(只是一些参数不同)模块化, 与编程中的函数类似,但是存储过程的功能大于函数 存储过程的定义如下。




1.创建存储过程

创建存储过程的语法如下。




1.1 一个简单的存储过程

新建查询中输入

create procedure pro_test
as
select * from Sales.SalesTerritory

即可创建一个简单的存储过程,结果储存在AdventureWorks2012——>可编程性——>存储过程中,调用时输入 exec pro_test 即可查询到对应表中的信息,如下图所示。






1.2 带参数的存储过程

在新建查询中输入

create procedure pro_test
@region nvarchar(10)    --创建一个变量用来存储数据
as
select * from Sales.SalesTerritory where CountryRegionCode=@region    把要存储的数据赋值给region

即可,用 exec pro_test @region='US' 进行查询。结果如下图。




1.3使用输出参数

在制定输入列表时可以指定一部分参数作为输出参数。

在新建查询中输入

create procedure pro_test
@ter int,
@sales int output    --定义一个输出参数sales
as
select @sales=a.SalesLastYear from Sales.SalesTerritory a where TerritoryID=@ter    --ter获取territoryID具体值,sales输出对应行的SalesLastYear值
declare @out int
exec pro_test @ter='2',@sales=@out output    --在查询时需要新建一个参数out以存储sales值
print @out

即可,结果如下图,输出了对应territoryID的SalesLastYear值


2.修改与删除存储过程

2.1修改存储过程

修改存储过程的语法如下。




修改存储过程的方法很简单,直接在已有的存储过程单击右键修改,出现修改界面,如下图,在图中对红框部分的功能进行修改即可。




2.2 删除存储过程

删除存储过程的语法如下。




新建查询中输入 drop procedure pro_test 即可。


3.临时存储过程

与创建临时表相似,存储过程也分为 本地临时过程全局临时过程。


创建临时表的方法参照:http://blog.csdn.net/s1314_JHC/article/details/78523844

  • 本地临时表以#开头,仅对当前用户可见,从SQL Server断开连接后被删除。
  • 全局临时表以##开头,对所有用户可见,从SQL Server断开连接后被删除。


创建临时存储过程时,在新建查询中输入

create procedure #pro_test    --#pro_test表示本地临时过程
as
select * from Sales.SalesTerritory

即可,结果如下。如果再创建一个新的查询,则会出错。如下右图。