From:一条被猫抛弃的他乡流浪狗!

SQLServer存储过程中事务的使用

 1 create proc usp_Stock
 2 @GoodsId int, 
 3 @Number int, 
 4 @StockPrice money, 
 5 @SupplierId int, 
 6 @EmpId int, 
 7 @StockUnit varchar(50), 
 8 @StockDate datetime, 
 9 @TotalMoney money , 
10 @ActMoney money , 
11 @baseId int,
12 @Description nvarchar(255)
13 as
14     declare @error int =0 --事务中操作的错误记录
15     --开启事务
16     begin transaction
17         --实现进货信息的添加
18         insert into StockInfo values(@GoodsId, @Number, @StockPrice, @SupplierId, @EmpId, @StockUnit, @StockDate, @TotalMoney, @ActMoney,DEFAULT,@Description, @baseId)
19         set @error+=@@ERROR --记录有可能产生的错误号    
20         --获取当前进货信息的标识列
21         --判断当前商品有没有进货记录
22         if exists (select * from dbo.InventoryInfo where goodid=@GoodsId) --说明记录存在,直接修改库存数量
23             begin
24                 update  dbo.InventoryInfo set GNumber=GNumber+@Number,TotalMoney+=@TotalMoney where goodid=@GoodsId
25                 set @error+=@@ERROR --记录有可能产生的错误号            
26         end    
27         else --这个商品从来没有过进货记录,那么就应该添加新的存在信息
28             begin
29                 declare @GWarningNum int  --此商品的预警数量
30                 --获取预警数量
31                 set @GWarningNum=(select WaringNum from dbo.GoodsInfo where GId=@GoodsId)
32                 insert into     dbo.InventoryInfo values(@GoodsId,@Number,@baseId,@GWarningNum,@TotalMoney,'第一次进货',default)
33                 set @error+=@@ERROR --记录有可能产生的错误号            
34             end
35 --判断事务的提交或者回滚
36 if(@error<>0)
37     begin
38         rollback transaction
39         return -1 --设置操作结果错误标识
40     end
41 else
42     begin
43         commit transaction
44         return 1 --操作成功的标识
45     end
46 go

 

posted @ 2015-05-18 21:35  ICE_Inspire  阅读(478)  评论(0编辑  收藏  举报