存储过程的概念
在SQL Server中,可以定义子程序存放在数据库中,这样的子程序称为存储过程,存储过程是数据库对象之一。
存储过程的特点:
(1)存储过程在服务器端运行,执行速度快。
(2)存储过程执行一次后,其执行驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。
(3)确保数据库的安全。使用存储过程可以完成所有的数据库操作。
(4)降低网络负载,提高效率。
(5)可以接受用户参数,亦可返回参数
存储过程的类型:
SQL Server支持以下几种类型的存储过程
1、系统存储过程(以“sp_”为前缀,存储master里)
2 、本地存储过程(存储在用户定义的数据库中)
3、扩展存储过程(以“xp_”为前缀,存储在master里)
4、临时存储过程(名字以#开头)
注意:用户定义存储过程不能以sp /xp 开头
创建存储过程
语法格式:

create procedure 存储过程名
as
sql语句


执行存储过程


语法:


exec 存储过程名


修改存储过程


语法:


alter proc 存储过程名
as
sql语句


删除存储过程


语法:


drop procedure存储过程名


查看存储过程


sp_helptext查看存储过程的定义


sp_help查看存储过程的有关信息


sp_depends查看存储过程所依据的对象.


sp_rename 存储过程原名,存储过程新名


存储过程中参数的使用


存储过程可以带一个或多个输入参数,输入参数是指由调用程序向存储过程传递的参数,它们在创建存储过程语句中被定义,在执行存储过程中给出相应的参数值。


语法:


create procedure存储过程名
(@参数名 数据类型[=默认值] [,...n])
AS 
sql语句

执行带参数的存储过程


使用参数名传递参数值


语法:

EXECUTE 存储过程名 [@参数名=参数值] [,...n]
例:execute p_a @sname=‘aaa',@pwd='123'


按参数位置传递参数值


语法:

EXECUTE 存储过程名   参数值1,参数值2
例: execute p_a ‘aaa','123


加密存储过程


存储过程也可通过权限设置,来控制各种用户的执行操作,还可加密来保证存储过程创建文本的安全,加密方法同视图


create proc p_mi
(
参数组
)
with encryption--加密
As
sql语句



带输出参数的存储过程


如果需要从存储过程中返回一个或多个值,可以通过在创建存储过程的语句中定义输出参数来实现,为了使用输出参数,需要在CREATE PROCEDURE语句中指定OUTPUT关键字


语法:


CREATE PROCEDURE 存储过程名
@参数名 数据类型  OUTPUT [,...n]
AS 
SQL语句