存储过程

存储过程:
定义:存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在

数据库中。
使用存储过程的优点:
1.在服务器端运行,执行速度快。
2.执行一次后,其执行规划就驻存高速缓冲存储器中,以后操作时只需从高速缓冲存储器中调用

已编译后的二进制代码执行,提高了系统性能。
3.确保数据库的安全。
4.自动完成需要预先执行的任务。

存储过程的类型:
系统存储过程:由系统提供,作为命令执行各种操作。
本地存储过程:在用户数据库中创建,可完成特定操作任务。
临时存储过程:只能在一个用户会话中使用。名称以#开头。 
远程存储过程:从远程服务器上调用。 
扩展存储过程:是指在SQL Server环境之外执行的动态链接库,其前缀是sp_

存储过程的语句:
创建格式:
Create procedure procedue_name

[@parameter data_type][output]  
 
  [with]{recompile|encryption}

  as

sql_statement

@paramete是存储过程的形参,data_type用于指定形参的数据类型
Output指示参数是输出参数,可返回信息。
recompile|encryption参数的处理方式。
sql_statement代表过程体包含的T-SQL语句

现有数据库Test,Table(Message)

1.创建带返回集的存储过程

create procedure R1
@
as
begin
select * from [Test].[dbo].[Message]
end

exec R1

2.创建一个要求输入一个输入参数的存储过程

create procedure R2
@ID int=1   
as
begin
select * from [Test].[dbo].[Message]
where ID=@ID
end

exec R2 1 

3.创建一个要求输入两个输入参数的存储过程

create procedure R3
@ID int=1,
@CH char(4)='PA'
as
begin
select * from [Test].[dbo].[Message]
where ID=@ID and CHK_CONN=@CH
end

exec R3 3,'PAS'

4.创建有返回值的存储过程

create procedure R4
@ID int,
@CH char(4),
@THROUGHPUT varchar(50) output
as
begin
select @THROUGHPUT=TX_THROUGHPUT from [Test].[dbo].[Message]
where ID=@ID and CHK_CONN=@CH
end

Declare @THROUGHPUT varchar(50)//声明一个变量用来接收执行过存储过程后的返回值

exec R4 3,'PASS' ,@THROUGHPUT output

select @THROUGHPUT as 'F'//as 后是给返回的列值起的一个别名

5.创建可以更改的存储过程

alter procedure R4

@ID int=1,
@CH char(4),
@THROUGHPUT varchar(50) output,
@Serial varchar(12)output
as
begin
select @THROUGHPUT=TX_THROUGHPUT ,@Serial=SerialNumber from [Test].[dbo].[Message]
where ID=@ID and CHK_CONN=@CH
end

Declare @THROUGHPUT varchar(50),@Serial varchar(12)
exec R4 1,'PASS' ,@THROUGHPUT output,@Serial output
select @THROUGHPUT, @Serial as 'F'

6创建存储信息(if---else)

create procedure R6
@ID int=1,
@CH char(4),
@THROUGHPUT varchar(50) output
as
begin
if exists
(select * from [Test].[dbo].[Message] where ID=@ID and CHK_CONN=@CH)
select @THROUGHPUT='True'
else
select @THROUGHPUT='False'
end

Declare @THROUGHPUT varchar(50)
exec R6 1,'PASS',@THROUGHPUT output
select @THROUGHPUT 'F'

posted @ 2013-06-11 16:53  曉軒  阅读(201)  评论(0编辑  收藏  举报