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;
结果:当前日期

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐