mssql 2008 游标 临时表 作业批处理失败问题

在项目中,写过一个作业,当订单超过1个小时未支付,则取消订单,同时返回订单使用的积分,优惠券,余额。

经过调试发现,作业存储过程中,使用了游标,而且使用了临时表,在游标第一次创建临时表时,没有问题,但是第二次执行再创建,就有问题了,需要判断是否有此临时表,如果有删除,再创建,就没问题了。

    --返还使用的优惠券
                                        
                    IF OBJECT_ID('tempdb..#usedcoupon') IS NOT NULL
                        BEGIN
                            DROP TABLE  #usedcoupon
                        END
                    SELECT DISTINCT
                            p.orderid ,
                            p.CouponsMemberID
                    INTO    #usedcoupon
                    FROM    orderproduct p ( NOLOCK )
                    WHERE   p.orderid = @cancel_orderid 
                    
                    UPDATE  m
                    SET     Status = 1 ,
                            UsedTimes = UsedTimes - 1 ,
                            IsUsed = 0 ,
                            UsedTime = NULL ,
                            UseUserID = NULL ,
                            m.OrderID = 0 ,
                            m.orderno = ''
                    FROM    CouponsMember m ( NOLOCK ) ,
                            #usedcoupon c ( NOLOCK )
                    WHERE   c.CouponsMemberID = m.UID 

 

posted on 2016-01-18 15:20  alonelonly  阅读(356)  评论(0编辑  收藏  举报

导航