程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> SQLServer存儲過程中事務的使用方法,

SQLServer存儲過程中事務的使用方法,

編輯:更多數據庫知識

SQLServer存儲過程中事務的使用方法,


本文為大家分享了SQLServer存儲過程中事務的使用方法,具體代碼如下

create proc usp_Stock
@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

希望本文所述對大家學習數據庫操作有所幫助。

您可能感興趣的文章:

  • Sqlserver 存儲過程中結合事務的代碼
  • sqlserver 函數、存儲過程、游標與事務模板
  • SQLServer分布式事務問題
  • sqlserver 存儲過程帶事務 拼接id 返回值
  • 使用Sqlserver事務發布實現數據同步(sql2008)
  • sqlserver中的事務和鎖詳細解析
  • SQLServer2005觸發器提示其他會話正在使用事務的上下文的解決方法
  • c#實現sqlserver事務處理示例

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved