create procedure [dbo].[Proc_ruku]
(
@Purchase_Id int
)
as
Begin Try
BEGIN TRANSACTION T
Update Purchase Set Purchase_State=1 Where Purchase_Id=@Purchase_Id --修改状态
--声明一个游标
Declare @PurchaseMate_Num int,@Product_Id int,@WareHose_Id int
Declare Mycursor Cursor
For select PurchaseMate_Num,Product_Id,WareHose_Id from PurchaseMate join Purchase on Purchase.Purchase_Id=PurchaseMate.Purchase_Id where Purchase.Purchase_Id=@Purchase_Id
--打开游标
Open Mycursor
--循环一个游标
Fetch next from Mycursor into @PurchaseMate_Num,@Product_Id,@WareHose_Id
while @@FETCH_STATUS=0
begin
update Stock set Stock_num= Stock_num+@PurchaseMate_Num where Product_Id=@Product_Id and WareHose_Id=@WareHose_Id
fetch next from Mycursor into @PurchaseMate_Num,@Product_Id,@WareHose_Id--转到下一条游标,没有就会死循环
end
CLOSE Mycursor --关闭游标
DEALLOCATE Mycursor--释放游标
COMMIT TRANSACTION T
return 1
END TRY
BEGIN CATCH
DECLARE @msg nvarchar(2000)=ERROR_MESSAGE() --将捕捉到的错误信息存在变量@msg中
RAISERROR (@msg,16,1) --此处才能抛出(好像是这样子....)
ROLLBACK TRANSACTION T --回滚
close Mycursor --关闭游标
DEALLOCATE Mycursor--释放游标
return 0
END CATCH