sql server ISNULL失效

最近在编写procedure时,用到了ISNULL函数,单独测试时是没有问题的,但将其用到12个月中的分别汇总就出现问题,其不能将出现null值的情况,处理为小子设置的null对应值0. 

eg:   set @Qty=ISNULL(@Qty,0)    如果@Qty为null,应该将Qty设置为0的,然却还是为null,甚是不解;此需跟进了解……

百度、bing一番,有的文章说在有聚合函数的时候会导致出现这种情况。最后不得不用exists来解决,如下才解决:

if exists(select ReuseDryBatch,ReuseLudox from [Local_REUSE] where YEAR=(@char_year) and MONTH=(@char_month) ) 
    begin
            select @Reuse=(ReuseDry+ReuseLod*@Lod)
            from [Local__MU_REUSE] 
            where YEAR=(@char_year) and MONTH=(@char_month) 
    end 
else
        begin 
        set @Reuse=0
        end

 

 

另外还发现在sql server上执行此procedure耗时为10多秒左右,但是一到单页面应用上调用此procedure除了当前月正常,其它年月就出现超时现象……也是困扰愚一些时间,今看到其可能是由于未关闭 ANSI_WARNINGS 所致……小子尝试着在开始处set ANSI_WARNINGS off,并在尾set ANSI_WARNINGS on. 随后在单页面应用上调用,则正常。此原理还需了解……记之以备忘!

posted @ 2020-11-06 22:20  盛沧海  阅读(626)  评论(0编辑  收藏  举报