存储过程
存储过程:
定义:存储过程(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'