• 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
  • 相关阅读:
    .NET 低版本调用高版本DLL问题
    防止SQL注入攻击
    Vue集成vue-pdf进行pdf预览
    VS2017序列号|Visual Studio 2017 激活码 序列号
    Java 使用word文档模板下载文件(内容为表格)
    接收sql语句的返回值
    ajax返回数据之前的loading等待
    在客户端展示本地图片
    C# 使用cookie实现登录
    C#请求http向网页发送数据,网页接收
  • 原文地址:https://www.cnblogs.com/dongh/p/9358301.html
Copyright © 2020-2023  润新知