上面这段是判断传递的参数 @strInvCCode1 和 @strInvCCode2 是否为空,以及都不为
空的情况下,某个为空等条件下组拼 SQL语句的代码
应该是写在存储过程里边的!

解决方案 »

  1.   

    if IsNULL(@strInvCCode1,'')<>'' and IsNULL(@strInvCCode2,'')<>''  --都不为空值的情况
           Begin
               --根据大小关系,确定 between..and..中两个参数的位置
                If @strInvCCode1 <= @strInvCCode2 
                          Begin
                     Set @sExtInvFilter = ' And (LEFT(Inventoryclass.cInVCCode,Len(' + @strInvCCode1 + ')) Between '''
                      + @strInvCCode1 +''' and ''' + @strInvCCode2 +''')'
                     --Select @sExtInvFilter  --Debug
                End     
                Else If @strInvCCode1 > @strInvCCode2
                Begin
                  Set @sExtInvFilter = ' And (LEFT(Inventoryclass.cInVCCode,Len(' + @strInvCCode1 + ')) Between '''
                      + @strInvCCode2 +''' and ''' + @strInvCCode1 +''')'
                     --Select @sExtInvFilter  --Debug
                End 
           End
        --接着第一个IF 语句的ELSE,当其中一个为空值时,SQL的连接组成情况
           else if IsNULL(@strInvCCode1,'')<>'' and IsNULL(@strInvCCode2,'')=''
               Set @sExtInvFilter =' And (InventoryClass.cInvCCode Like ''' +@strInvCCode1 +'%'')'
           else if IsNULL(@strInvCCode1,'')='' and IsNULL(@strInvCCode2,'')<>''
               Set @sExtInvFilter =' And (InventoryClass.cInvCCode Like ''' +@strInvCCode2 +'%'')'
      

  2.   

    这是一段根据@strInvCCode1 和 @strInvCCode2 两个变量得到数据过滤条件的SQL语句,
    大致注解如下:IF @strInvCCode1 和 @strInvCCode2 两个都不为NULL 则进一步做判断
    begin
      if @strInvCCode1 <= @strInvCCode2 
          得到    between 1 and 2
      if @strInvCCode1 > @strInvCCode2 
          得到    between 2 and 1
    end
    elseif @strInvCCode1 不为空,@strInvCCode2为空
          得到 LIKE 1
    elseif @strInvCCode1 为空,@strInvCCode2不为空
          得到 LIKE 2