sqlserver之基础存储过程
存储过程是数据库中,一组为了完成特定功能,预编译的SQL语句集
存储过程的优点
1.存储过程在服务器端调用,执行速度快。
2.存储过程执行一次后,会驻留在高速缓冲吨初期,提高了系统的性能。
3.使用存储过程可以完成所有数据库操作,并可通过科变成的方式控制对数据库信息访问的权限,确保数据库的安全。
4.自动完成需要预先执行的任务,存储过程可以在sqlserver启动时自动执行。
创建存储过程
存储过程类型
1.不含参数的存储过程
(重点变量先声明在使用,declare声明后记得添加数据类型)
变量声明在as前是参数(分为输入参数和输出参数output),在as之后为局部变量。
create PROCEDURE dbo.testp1
AS
BEGIN
declare @a int;
set @a=10;
select @a;
END
执行语句:exec testp1 执行结果:10
2.带返回值的存储过程。
create PROCEDURE [dbo].[testp3]
AS
BEGIN
declare @a int;
set @a=3;
return @a;
END
执行语句
declare @testp3 int;
exec @testp3=dbo.testp3;
select @testp3
结果:3
3.执行含有查询语句的存储过程
create PROCEDURE [dbo].[testp5]
AS
BEGIN
select * from dbo.test01;
END
执行语句:exec testp5
4.含参数的存储过程
create PROCEDURE [dbo].[testp6]
@datetime1 date,
@out_number int,
@in_number int
AS
BEGIN
insert into dbo.test01 values(@datetime1,@out_number,@in_number);
END
执行语句:exec testp6 ‘2021-5-1’,100,101;
5.带返回值(含参数)
create PROCEDURE [dbo].[testp7]
@datetime1 date,
@out_number int,
@in_number int
AS
BEGIN
if @datetime1 is not null
begin
insert into dbo.test01 values(@datetime1,@out_number,@in_number);
return 1;
end;
else
return -1;
END
执行语句:
declare @testp7 int;
exec dbo.testp7 ‘2021-5-2’,200,201;
select @testp7;
结果:1
6.带输出参数的存储过程
create PROCEDURE [dbo].[testp8]
@out_number int,
@in_number int,
@datetime1 date output
AS
BEGIN
if(@out_number is not null)
begin
declare @datet date;
set @datet=GETDATE();
insert into dbo.test01 values(@datet,@out_number,@in_number);
set @datetime1=@datet;
end;
else
set @datetime1=null;
END
执行语句:
declare @datetime date;
exec dbo.testp8 300,301,@datetime output;
select @datetime;
结果:当前日期