今天写了个商品采购入得存储过程,使用游标实现的,实现了多个商品库存的增加...

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

 

转载于:https://www.cnblogs.com/dzdrmmf/p/6067181.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值