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 --事務(wù)中操作的錯(cuò)誤記錄
--開啟事務(wù)
begin transaction
--實(shí)現(xiàn)進(jìn)貨信息的添加
insert into StockInfo values(@GoodsId, @Number, @StockPrice, @SupplierId, @EmpId, @StockUnit, @StockDate, @TotalMoney, @ActMoney,DEFAULT,@Description, @baseId)
set @error+=@@ERROR --記錄有可能產(chǎn)生的錯(cuò)誤號
--獲取當(dāng)前進(jìn)貨信息的標(biāo)識列
--判斷當(dāng)前商品有沒有進(jìn)貨記錄
if exists (select * from dbo.InventoryInfo where goodid=@GoodsId) --說明記錄存在,直接修改庫存數(shù)量
begin
update dbo.InventoryInfo set GNumber=GNumber+@Number,TotalMoney+=@TotalMoney where goodid=@GoodsId
set @error+=@@ERROR --記錄有可能產(chǎn)生的錯(cuò)誤號
end
else --這個(gè)商品從來沒有過進(jìn)貨記錄,那么就應(yīng)該添加新的存在信息
begin
declare @GWarningNum int --此商品的預(yù)警數(shù)量
--獲取預(yù)警數(shù)量
set @GWarningNum=(select WaringNum from dbo.GoodsInfo where GId=@GoodsId)
insert into dbo.InventoryInfo values(@GoodsId,@Number,@baseId,@GWarningNum,@TotalMoney,'第一次進(jìn)貨',default)
set @error+=@@ERROR --記錄有可能產(chǎn)生的錯(cuò)誤號
end
--判斷事務(wù)的提交或者回滾
if(@error>0)
begin
rollback transaction
return -1 --設(shè)置操作結(jié)果錯(cuò)誤標(biāo)識
end
else
begin
commit transaction
return 1 --操作成功的標(biāo)識
end
go