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
  • 相关阅读:
    网络流 KM dinic
    网络流 增广路 回退
    树链剖分
    线段树区间更新 lazy
    全排列
    各种蕴含算法思想的DP
    各种蕴含算法思想的DP
    Strassen矩阵乘法之思考
    [0,x)的随机数
    hdu1331 按着题目的公式直接写
  • 原文地址:https://www.cnblogs.com/dongh/p/9358301.html
Copyright © 2011-2022 走看看