游标使用

SET NOCOUNT ON
DECLARE @poc INT,@PurchaseOrderId NVARCHAR(40),@EBELP INT,@sql NVARCHAR(max),
@PurchaseOrderDetailId NVARCHAR(40),@ExpenseShareId NVARCHAR(40),
@DetailCursor CURSOR, --订单明细游标
@ShareCursor CURSOR--订单分摊游标    
DECLARE OrderCursor CURSOR LOCAL FOR SELECT DISTINCT PurchaseOrderCode FROM SAPMiddleDB.dbo.SAP_PurchaseOrder_Item --WHERE PurchaseOrderCode IN (1129,1130)
OPEN OrderCursor
FETCH NEXT FROM OrderCursor INTO @poc
WHILE(@@FETCH_STATUS=0)
BEGIN    
    SET @PurchaseOrderId=NULL
    ------------------------------------------------------------------------------------------------------------------
    SELECT @PurchaseOrderId=PurchaseOrderId FROM purchase20150427.dbo.t_d_PurchaseOrder WHERE PurchaseOrderCode=@poc
    IF(@PurchaseOrderId IS NOT NULL)
    BEGIN    
        set @DetailCursor = CURSOR LOCAL for select PurchaseOrderDetailId from purchase20150427.dbo.t_d_PurchaseOrder_Detail    
                                            where PurchaseOrderId=@PurchaseOrderId ORDER BY DisplayIndex        
        open @DetailCursor
        SET @EBELP=10
        fetch next from @DetailCursor into @PurchaseOrderDetailId
        WHILE(@@FETCH_STATUS=0)    
        BEGIN        
            set @ShareCursor = CURSOR LOCAL for SELECT ExpenseShareId from purchase20150427.dbo.t_d_PurchaseOrder_ExpenseShare            
                                                where PurchaseOrderDetailId = @PurchaseOrderDetailId order by DisplayIndex
            open @ShareCursor
            fetch next from @ShareCursor into @ExpenseShareId
            WHILE(@@FETCH_STATUS=0)
            BEGIN
                 
                UPDATE SAPMiddleDB.dbo.SAP_PurchaseOrder_Item
                SET DetailId=@PurchaseOrderDetailId,ExpenseShareId=@ExpenseShareId
                WHERE PurchaseOrderCode=@poc AND EBELP=@EBELP
                
                /*
                SET @sql='select PurchaseOrderCode,EBELP,DetailId,ExpenseShareId from SAPMiddleDB.dbo.SAP_PurchaseOrder_Item WHERE PurchaseOrderCode='                
                +CAST(@poc AS NVARCHAR(10)) +' AND EBELP='+CAST(@EBELP AS NVARCHAR(10))
                PRINT @sql
                
                SET @sql='UPDATE SAPMiddleDB.dbo.SAP_PurchaseOrder_Item SET DetailId='''
                +@PurchaseOrderDetailId+''',ExpenseShareId='''
                +@ExpenseShareId+''' WHERE PurchaseOrderCode='
                +CAST(@poc AS NVARCHAR(10)) +' AND EBELP='
                +CAST(@EBELP AS NVARCHAR(10))                
                PRINT @sql
                */
                
                
                set @EBELP =  @EBELP + 10             
                FETCH NEXT FROM @ShareCursor into @ExpenseShareId
                
            END            
            close @ShareCursor
            deallocate @ShareCursor
            fetch next from @DetailCursor into @PurchaseOrderDetailId
        END        
        CLOSE @DetailCursor
        DEALLOCATE @DetailCursor
    END
    
    ------------------------------------------------------------------------------------------------------------------

    
    FETCH NEXT FROM OrderCursor INTO @poc
END
CLOSE OrderCursor
DEALLOCATE OrderCursor

 

转载于:https://www.cnblogs.com/daixingqing/p/4505303.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值