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

  • 相关阅读:
    端口以及服务常用cmd
    异步,同步,阻塞,非阻塞,并行,并发,
    mysql启动不起来
    安装nagios出现的错误
    Linux内核优化
    mysql使用常见问题
    mysql日志
    mysql数据库使用脚本实现分库备份过程
    mysqladmin常用用法
    mysql授权
  • 原文地址:https://www.cnblogs.com/chengcanghai/p/13939273.html
Copyright © 2011-2022 走看看