• 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
    明天的你会感谢今天拼命奋斗的自己
  • 相关阅读:
    课程设计第二十二天,09.09
    课程设计第二十一天,09.08
    课程设计第二十天,09.07
    课程设计第十九天,09.06
    课程设计第十八天,09.05
    课程设计第十七天,09.04
    数词、介词、连词
    形容词、副词
    情态动词、非谓语动词、虚拟语气、独立主格结构
    词法、句法、短语、从句和句子、主谓一致、特殊句式
  • 原文地址:https://www.cnblogs.com/qzqdy/p/15077962.html
Copyright © 2020-2023  润新知