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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM