文章目录
前言
实际项目中会遇到很多复杂或重复的逻辑,这时候会用到存储过程,今天就来记录一下,存储过程的使用方法,以免忘记
存储过程的好处:
1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。
2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。
小结:总之存储过程是好东西,在做项目时属于必备利器,下面介绍存储过程的基本语法。
1.下面是一个简单的查询存储过程
--判断否存在改存储过程,如存在则删除
if exists (select * from sys.procedures where name='SelQ')
drop proc SelQ
go
--简单的查询存储过程:一个简单的查询存储过程
create proc SelQ
as
select * from Student
go
exec SelQ
--带参数的存储过程 :一个根据ID删除的存储过程
if exists (select * from sys.procedures where name='Del')
drop proc Del
go
create proc Del(@BookID int)
as
delete from BookInfo where BookID=@BookID
go
exec Del 4
2.存储过程与时间联合使用
代码如下(示例):
begin tran表示开始事务,
commit tran表示提交事务,
rollback tran表示回滚事物
CREATE PROCEDURE [dbo].[Finished]
@Id VARCHAR(50),
@uId VARCHAR(50),
@money int
AS
BEGIN TRAN
BEGIN TRY
declare @user1 select money from user where Id = @Id
if(@user1 > @money)
BEGIN
update user set money = money - @money where Id = @Id
update user set money = money + @money where Id = @uId
END
END TRY
BEGIN CATCH
ROLLBACK TRAN;
END CATCH
COMMIT TRAN;
GO