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. 随后在单页面应用上调用,则正常。此原理还需了解……记之以备忘!
*****有道无术,术尚可求;有术无道,止于术。*****