本文为大家分享了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 --设置操作结果错误标识  endelse  begin    commit transaction    return 1 --操作成功的标识  endgo

更多相关文章

  1. Android(安卓)UI系列 - 布局 - 目录
  2. Android(安卓)TabHost使用、动态加载内容
  3. Android(安卓)Calendar使用过程中遇到的问题
  4. Android自学笔记(Android(安卓)x86模拟器Intel Atom x86 System I
  5. android的常用控件总结【安卓入门五】
  6. [置顶] Android加载数据过程中的菊花显示
  7. Android(安卓)WebView 使用方法,可以解决web视频播放层级问题。
  8. android的activitygroup使用
  9. android Dialog中SeekBar的使用方法

随机推荐

  1. 20169210《Linux内核原理与分析》第七周
  2. Bash脚本删除目录中多个文件名末尾的'x'
  3. 自己实现的C++智能指针的功能代码和测试
  4. Linux 内存寻址之分段机制
  5. 我如何理解这个编译器错误:“...的多重定
  6. [日常] Linux使用diff来比较目录
  7. IO流在fork()的ed进程中
  8. Hadoop自测题及参考答案
  9. 解决多进程中使用wait无法避免僵尸进程的
  10. 升级到linux-image-3.13.0-46后安装vmwar