现在的位置: 首页 > 数据库 > 正文

sql存储过程

2019年11月16日 数据库 ⁄ 共 1443字 ⁄ 字号 评论关闭

概念:SQL Server提供了一种方法,它可以将一些固定的操作集中起来由SQL Server数据库服务器来完成,以实现某个任务,这种方法就是存储过程。

存储过程是SQL语句和可选控制流语句的预编译集合,存储过程在数据库中可由应用程序通过一个调用执行,而且允许用户申明变量、有条件的执行以及其它强大的编程功能

 

(1)实例:

if

exists
(select name  from sysobjects
where name='studentinfo' and type='P
')
drop procedure
studentinfo--删除存储过程

go
create procedure
studentinfo--创建存储过程

as

select * from student
go

execute studentinfo

--执行存储过程

 

 

(2)例二:带参数的存储过程

use NorthWind

go

 

create procedure
insert_Products_1(--创建一存储过程

@SupplierID_2 int
,--参数
@CategoryID_3 int
,
@ProductName_1 nvarchar

)
as insert into
products
(ProductName,SupplierID,CategoryID)
values

(@ProductName_1,@SupplierID_2,@CategoryID_3)
go

exec
insert_Products_1 2,2,2--执行存储过程并传入参数

select * from products where SupplierID=2 and CategoryID=2

 

 

(3)例三:使用返回参数

create procedure
query_products
(
@SupplierID_1 int
,
@ProductName_2 nvarchar(40) output
--使用返回参数
)
as

select
@ProductName_2=ProductName from
products
where
SupplierID=@SupplierID_1

declare
@product nvarchar(40)
exec
query_products 7,@product output--执行存储过程query_products,这里的7是传入的参数SupplierID,@product output指ProductName

select
'产品名'=@product

 

最后会显示:

产品名

Outback Lager

 

 

 

 

 

(4)查看存储过程 (通过系统表+存储过程名)

sp_helptext
query_products

sp_depends
query_products

sp_help
query_products

 

 

 

 

修改存储过程

例:

alter proc
pr_searchempl

@state char(2)

as

select * from table where state=@state

go

 

(5)编译存储过程

在我们使用了一次存储过程后,可能会因为某些原因,必须向表中新增加数据列或者为表新添加索引,从而改变数据库的逻辑结构,这时需要重新编译

1。在建立存储过程时设定重新编译

create procedure
procedure_name

with recompile

as
sql_statement

2。在执行存储过程时设定重新编译

execute
procedure_name

with
recompile

3。通过使用系统
存储过程设定重编译

exec
sp_recompile
object

抱歉!评论已关闭.