存储过程如下:alter proc SM_searchAccounts
@cjrq varchar(50)=null,
@zhxx varchar(20)=null,
@yhxm varchar(10)=null,
@xsid varchar(10)=null,
@whlsid varchar(10)=null,
@tplsid varchar(10)=null,
@ksrq varchar(50)=null,
@jsrq varchar(50)=null,
@cjzt varchar(10)=null,
@zb varchar(10)=null
as
select a.[id],e.cplx as cplx,a.cjrq,a.zhxx,a.yhxm,a.yhdh,a.yhsjhm,a.yhyb,a.yhdz,b.ygxm as xsry,c.ygxm as whry,d.ygxm as tpry,a.other,b.zb as zb from SM_cjdb as a inner join SM_employment_info as b on a.xsid=b.ygid inner join SM_employment_info as c on a.whlsid=c.ygid inner join SM_employment_info as d on a.tplsid=d.ygid inner join SM_cplxb as e on a.cpid=e.cplxid 
where a.tkfs is null and scbz=0
and(@cjrq is null or a.cjrq>=@cjrq)
and(@cjzt is null or a.cjzt=@cjzt)
and(@ksrq is null or a.cjrq>=@ksrq)
and(@jsrq is null or a.cjrq<=@jsrq)
and(@zhxx is null or a.zhxx like+'%'+@zhxx+'%')
and(@xsid is null or b.ygxm like+'%'+@xsid+'%')
and(@whlsid is null or c.ygxm like+'%'+@whlsid+'%')
and(@tplsid is null or d.ygxm like+'%'+@tplsid+'%')
and(@zb is null or b.zb=@zb)order by a.cjrq descGO下面是执行的语句,是可以查到的
exec SM_searchAccounts
exec SM_searchAccounts '2007-10-15',null,null,null,null,null,null,null,'0',null
exec SM_searchAccounts null,'021',null,null,null,null,null,null,'0',null但我在页面上这样写就不对了,语句都对的,但就是得不到任何结果,一直是0数据

解决方案 »

  1.   

      这个问题 应该是你页面 传值的问题因为 SQL 中是 区分 null, ' ' 的。
      

  2.   

    把你那段asp.net传值的代码也发出来看看!!
    -----------
    还有就是字段类型的原因比较多吧!
      

  3.   

    很有可能是你在程序中向传递参数时出错了 比如传递空值时应给参数赋值SqlParameter p=new SqlParameter("@para",DBNull.Value) 而不是 SqlParameter p=new SqlParameter("@para",null)
    (猜测)
      

  4.   

    public static DataSet SearchAccounts(string cjrq,string zhxx,string yhxm,string xsid,string whlsid,string tplsid,string ksrq,string jsrq,string cjzt,string zb)
    {
    SqlConnection sqlConn = new SqlConnection(conn); 
    sqlConn.Open();
    //指明Sql命令的操作类型是使用存储过程
    SqlCommand cmd = sqlConn.CreateCommand(); 
    cmd.CommandType = CommandType.StoredProcedure; //指定执行存储过程操作 
    cmd.CommandText = "SM_searchAccounts"; //存储过程名称  SqlParameter parCjrq= new SqlParameter("@cjrq", DBNull.Value); 
    parCjrq.Value =cjrq;
    cmd.Parameters.Add(parCjrq); SqlParameter parZhxx= new SqlParameter("@zhxx", DBNull.Value); 
    parZhxx.Value =zhxx;
    cmd.Parameters.Add(parZhxx); SqlParameter parYhxm= new SqlParameter("@yhxm", DBNull.Value); 
    parYhxm.Value =yhxm;
    cmd.Parameters.Add(parYhxm); SqlParameter parXsid= new SqlParameter("@xsid", DBNull.Value); 
    parXsid.Value =xsid;
    cmd.Parameters.Add(parXsid); SqlParameter parWhlsid= new SqlParameter("@whlsid", DBNull.Value); 
    parWhlsid.Value =whlsid;
    cmd.Parameters.Add(parWhlsid); SqlParameter parTplsid= new SqlParameter("@tplsid", DBNull.Value); 
    parTplsid.Value =tplsid;
    cmd.Parameters.Add(parTplsid); SqlParameter parKsrq= new SqlParameter("@ksrq", DBNull.Value); 
    parKsrq.Value =ksrq;
    cmd.Parameters.Add(parKsrq); SqlParameter parJsrq= new SqlParameter("@jsrq", DBNull.Value); 
    parJsrq.Value =jsrq;
    cmd.Parameters.Add(parJsrq); SqlParameter parCjzt= new SqlParameter("@cjzt", DBNull.Value); 
    parCjzt.Value =cjzt;
    cmd.Parameters.Add(parCjzt); SqlParameter parZb= new SqlParameter("@zb", DBNull.Value); 
    parZb.Value =zb;
    cmd.Parameters.Add(parZb);
              
    DataSet ds=new DataSet();
    SqlDataAdapter adapter=new SqlDataAdapter(cmd);
        
    adapter.Fill(ds);
    sqlConn.Close();
    return ds;
    }
    这样写也是得不到结果
      

  5.   

    SearchAccounts函数加个判断,如果这个参数为空,就不需要添加这个参数了..public static DataSet SearchAccounts(string cjrq,string zhxx,string yhxm,string xsid,string whlsid,string tplsid,string ksrq,string jsrq,string cjzt,string zb) 

    SqlConnection sqlConn = new SqlConnection(conn);  
    sqlConn.Open(); 
    //指明Sql命令的操作类型是使用存储过程 
    SqlCommand cmd = sqlConn.CreateCommand();  
    cmd.CommandType = CommandType.StoredProcedure; //指定执行存储过程操作  
    cmd.CommandText = "SM_searchAccounts"; //存储过程名称  if(cjrp!=null&&cjrp.Trim()!="")
    {
     cmd.Parameters.Add("@cjrq", SqlDbType.VarChar, 50);//参数名,类型,长度
     cmd.Parameters["@cjrq"].Value = cjrp;   
    }
    //其他的参数    
    //其他的参数 
    //其他的参数 
           
    DataSet ds=new DataSet(); 
    SqlDataAdapter adapter=new SqlDataAdapter(cmd); 
         
    adapter.Fill(ds); 
    sqlConn.Close(); 
    return ds; 

      

  6.   

    嗯 你这个函数在声明参数的时候应该判断一下空或空串 不然传进去了的也不对
    仿照下面这样改试试
    if(cjrp!=null&&cjrp.Trim()!="") 

      cmd.Parameters.Add("@cjrq", cjrp);

    else
    {
      cmd.Parameters.Add("@cjrq", DBNull.Value);
    }