zoukankan      html  css  js  c++  java
  • 今天写了个商品采购入得存储过程,使用游标实现的,实现了多个商品库存的增加

    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
  • 相关阅读:
    sso单点登录
    mysql java写入时间少14小时
    mysql 时间
    mysql中timestamp的自动生成与更新
    centos7下用命令安装node&pm2
    腾讯蓝鲸资源分配
    Centos7 安装谷歌浏览器
    Ubuntu安装Apache 2.4.7常见问题解答
    Ubuntu常见服务启停
    LVM 'Can’t open /dev/sdb1 exclusively. Mounted filesystem?' Problem
  • 原文地址:https://www.cnblogs.com/dzdrmmf/p/6067181.html
Copyright © 2011-2022 走看看