zoukankan      html  css  js  c++  java
  • SqlServer存储过程中使用事务,示例

    create proc pro_GetProTrans
    @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
  • 相关阅读:
    PHP、JAVA、C#、Object-C 通用的DES加密
    xtraScrollableControl 滚动条随鼠标滚动
    C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法
    C#获取“所有用户桌面”的路径
    C#如何获取快捷方式指向的目标文件
    10
    09
    新浪微博中tableview中头部信息
    ASIHTTPRequest类库简介和使用说明
    IOS常用设计模式之委托模式
  • 原文地址:https://www.cnblogs.com/dongh/p/9358301.html
Copyright © 2011-2022 走看看