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
  • 相关阅读:
    ThinkPHP3.2 分组分模块
    PHP 视频
    微信分享SDK
    【mysql】一维数据TopN的趋势图
    【日期-时间】Java中Calendar的使用
    【java消息格式化】使用MessageFormat进行消息格式化
    【Java数据格式化】使用DecimalFormat 对Float和double进行格式化
    【xargs使用】查询包含某字符串的所有文件
    【SVN】自动备份SVN仓库
    【Oozie】安装配置Oozie
  • 原文地址:https://www.cnblogs.com/smartsmile/p/7666023.html
Copyright © 2011-2022 走看看