zoukankan      html  css  js  c++  java
  • 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. 随后在单页面应用上调用,则正常。此原理还需了解……记之以备忘!

  • 相关阅读:
    黑松白鹿
    跨越
    第三年
    Lua windows环境搭建
    Iron man
    水果沙拉
    六周岁
    sqlserver数据库附加报错5120
    [BeiJing2006]狼抓兔子 平面图最小割
    BZOJ2118: 墨墨的等式 思维建图
  • 原文地址:https://www.cnblogs.com/chengcanghai/p/13939273.html
Copyright © 2011-2022 走看看