解决方案 »

  1.   

    建议加个 OUTPUT parameter 来返回生成的 SQL 来检验。
      

  2.   

    IF (@ParamValue IS NOT NULL) 应该是 IF (LEN(ISNULL(@ParamValue,''))>0 AND LEN(ISNULL(@ParamField,''))>0 ) 还有里面还带中文的话,字段类型应该都改成nvarchar 为什么写这样的语句?这样的方式维护起来简直是噩梦。
      

  3.   

    多谢指点,我又回头看了下代码,确实是调用的问题,我直接传了个空字符串进去,搞成DBNUll,就可以了
      

  4.   

    你这么写很累的IF (@ParamValue IS NOT NULL)
        BEGIN
            SET @sql = 'select ' + @ReturnField + ' from ' + @TableName + ' where ' + 
                @ParamField+ '=' +'''' +@ParamValue+''''
        END改成这样把,如果@ParamValue是null,那么 这一堆@ParamField+ '=' +'''' +@ParamValue+'''' 就是null,那么就是'' 也就是空串SET @sql = 'select ' + @ReturnField + ' from ' + @TableName + ' where 1=1' + 
               ISNULL(@ParamField+ '=' +'''' +@ParamValue+'''', '')