关于存储过程能执行,但在asp.net上执行没结果

shengweijun 2007-10-23 09:36:25
存储过程如下:

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 desc

GO

下面是执行的语句,是可以查到的
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数据
...全文
104 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
地下室小红叔 2007-10-24
  • 打赏
  • 举报
回复
嗯 你这个函数在声明参数的时候应该判断一下空或空串 不然传进去了的也不对
仿照下面这样改试试
if(cjrp!=null&&cjrp.Trim()!="")
{
cmd.Parameters.Add("@cjrq", cjrp);
}
else
{
cmd.Parameters.Add("@cjrq", DBNull.Value);
}
  • 打赏
  • 举报
回复
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;
}
shengweijun 2007-10-24
  • 打赏
  • 举报
回复
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;
}
这样写也是得不到结果
oec2003 2007-10-24
  • 打赏
  • 举报
回复
up
地下室小红叔 2007-10-24
  • 打赏
  • 举报
回复
很有可能是你在程序中向传递参数时出错了 比如传递空值时应给参数赋值SqlParameter p=new SqlParameter("@para",DBNull.Value) 而不是 SqlParameter p=new SqlParameter("@para",null)
(猜测)
活靶子哥哥 2007-10-24
  • 打赏
  • 举报
回复
贴程序代码
yuan74521940 2007-10-24
  • 打赏
  • 举报
回复
把你那段asp.net传值的代码也发出来看看!!
-----------
还有就是字段类型的原因比较多吧!
aminggu532 2007-10-24
  • 打赏
  • 举报
回复
mark
love_snow2007 2007-10-23
  • 打赏
  • 举报
回复
这个问题

应该是你页面 传值的问题

因为 SQL 中是 区分 null, ' ' 的。
shengweijun 2007-10-23
  • 打赏
  • 举报
回复
人呢

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧