首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

哪位高手看下这个存储过程,为什么进入了IF,求解。是不是@@ERROR用的有有关问题

2012-03-18 
谁看下这个存储过程,为什么进入了IF,求解。是不是@@ERROR用的有问题?SQL codeBEGINSELECT @OrderRowCount

谁看下这个存储过程,为什么进入了IF,求解。是不是@@ERROR用的有问题?

SQL code
BEGINSELECT @OrderRowCount = COUNT(*) FROM T_ORDER T WHERE T.DispOrderStatus != @CancelStatus AND T.DispOrderStatus!=@SuccessStatus  AND sellUserID=@sellUserIDAND TRADE_TYPE=@TradeTypeIF(@OrderRowCount>0)     SET @ReturnValue= -1SELECT @rowCountArbitrate = COUNT(*) from T_ORDER T WHERE T.Arbitrate = 6 AND t.sellUserID=@sellUserID AND t.TRADE_TYPE=@TradeTypeIF @rowCountArbitrate>0    set @ReturnValue = -3if exists (SELECT * FROM T_ORDER t WHERE t.sellUserID=@sellUserID AND t.DispOrderStatus =@SuccessStatus  AND t.TRADE_TYPE=@TradeType AND t.ORDER_DATE>@date)    set @ReturnValue = -4  --可以保证,执行到这里的时候 @ReturnValue = -1,但为什么还会进入这个IF执行下面的,并且最后给我返回一个1--是不是我@@ERROR用的有问题。IF(@ReturnValue = 0 OR @ReturnValue IS NULL)        UPDATE T_CARD_STOCK SET [status] = @ShelfStatus WHERE [uid]=@sellUserID             IF(@@ERROR = 0)                SET @ReturnValue = 1  --最后执行到了这里            ELSE                SET @ReturnValue = -2 return @ReturnValue END


[解决办法]
SQL code
BEGINSELECT @OrderRowCount = COUNT(*) FROM T_ORDER T WHERE T.DispOrderStatus != @CancelStatus AND T.DispOrderStatus!=@SuccessStatus  AND sellUserID=@sellUserIDAND TRADE_TYPE=@TradeTypeIF(@OrderRowCount>0)     SET @ReturnValue= -1SELECT @rowCountArbitrate = COUNT(*) from T_ORDER T WHERE T.Arbitrate = 6 AND t.sellUserID=@sellUserID AND t.TRADE_TYPE=@TradeTypeIF @rowCountArbitrate>0    set @ReturnValue = -3if exists (SELECT * FROM T_ORDER t WHERE t.sellUserID=@sellUserID AND t.DispOrderStatus =@SuccessStatus  AND t.TRADE_TYPE=@TradeType AND t.ORDER_DATE>@date)    set @ReturnValue = -4 print @ReturnValue --看下结果 --可以保证,执行到这里的时候 @ReturnValue = -1,但为什么还会进入这个IF执行下面的,并且最后给我返回一个1--是不是我@@ERROR用的有问题。IF(@ReturnValue = 0 OR @ReturnValue IS NULL)BEGIN        UPDATE T_CARD_STOCK SET [status] = @ShelfStatus WHERE [uid]=@sellUserID             IF(@@ERROR = 0)                SET @ReturnValue = 1  --最后执行到了这里            ELSE                SET @ReturnValue = -2 END  -- tryreturn @ReturnValue END 

热点排行