网络编程
位置:首页>> 网络编程>> 数据库>> SQLServer存储过程中事务的使用方法

SQLServer存储过程中事务的使用方法

作者:iceKnight  发布时间:2024-01-29 06:56:03 

标签:sqlserver,事务

本文为大家分享了SQLServer存储过程中事务的使用方法,具体代码如下


create proc usp_Stock
@GoodsId int,
@Number int,
@StockPrice money,
@SupplierId int,
@EmpId int,
@StockUnit varchar(50),
@StockDate datetime,
@TotalMoney money ,
@ActMoney money ,
@baseId int,
@Description nvarchar(255)
as
 declare @error int =0 --事务中操作的错误记录
 --开启事务
 begin transaction
   --实现进货信息的添加
   insert into StockInfo values(@GoodsId, @Number, @StockPrice, @SupplierId, @EmpId, @StockUnit, @StockDate, @TotalMoney, @ActMoney,DEFAULT,@Description, @baseId)
   set @error+=@@ERROR --记录有可能产生的错误号  
   --获取当前进货信息的标识列
   --判断当前商品有没有进货记录
   if exists (select * from dbo.InventoryInfo where goodid=@GoodsId) --说明记录存在,直接修改库存数量
     begin
       update dbo.InventoryInfo set GNumber=GNumber+@Number,TotalMoney+=@TotalMoney where goodid=@GoodsId
       set @error+=@@ERROR --记录有可能产生的错误号      
   end  
   else --这个商品从来没有过进货记录,那么就应该添加新的存在信息
     begin
       declare @GWarningNum int --此商品的预警数量
       --获取预警数量
       set @GWarningNum=(select WaringNum from dbo.GoodsInfo where GId=@GoodsId)
       insert into   dbo.InventoryInfo values(@GoodsId,@Number,@baseId,@GWarningNum,@TotalMoney,'第一次进货',default)
       set @error+=@@ERROR --记录有可能产生的错误号      
     end
--判断事务的提交或者回滚
if(@error<>0)
 begin
   rollback transaction
   return -1 --设置操作结果错误标识
 end
else
 begin
   commit transaction
   return 1 --操作成功的标识
 end
go

希望本文所述对大家学习数据库操作有所帮助。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com