关于存储过程中参数调用的问题!!!
发布网友
发布时间:2022-04-27 07:59
我来回答
共1个回答
热心网友
时间:2022-05-07 00:45
该存储过程是分页用的,所以必须固定查询参数
------------其VB.NET参数语句如下
cmd2.Parameters.Add(New System.Data.SqlClient.SqlParameter("@tel", SqlDbType.VarChar)).Value = cs_tel
其中@tel在为存储过程输入参数,其定义是@tel VarChar(20)
cs_tel的来源代码是:
If Request.Form("tel") <> "" Then
cs_tel = Request.Form("tel")
Else
cs_tel = "1"
End If
------------存储过程中的查询语句是
select id from kl10000 where tel like @tel+'%' order by tel desc
--------------------------------------------------------------------
可是现在我在表单无论输入什么数字,得到的都只是包含第一个数字的结果,
比如,我输入2568,查询,得到的却是开头包含"2"的所有结果,而非开头包含"2568"的所有结果..
咋回事呢?
回复人:singlepine(小山) 2005-05-08 18:45:00 得分:0
? 改为select id from kl10000 where tel like '%'+@tel+'%' order by tel desc
Top
回复人:mg42(曼斯坦因) 2005-05-08 20:55:00 得分:0
? 谢谢指点
问题是我对"tel"字段建立了索引,象上面这样搜索的话, 上百万记录会很慢
而且我在SQL里执行也是得到正确结果的,
是不是问题出在
cmd2.Parameters.Add(New System.Data.SqlClient.SqlParameter("@tel", SqlDbType.VarChar)).Value = cs_tel
这个语句上?
Top
回复人:hchxxzx(NET?摸到一点门槛) 2005-05-08 22:31:00 得分:0
? 可能,你可试着在传递值的时候,直接将值与%号连接在一起.
cmd2.Parameters.Add(New System.Data.SqlClient.SqlParameter("@tel", SqlDbType.VarChar)).Value = cs_tel + "%"
Top
回复人:dorisnet(啥都不会,郁闷!) 2005-05-08 22:55:00 得分:0
? 同意楼上的。。。
Top
回复人:hreoghost(纳闷猫..oО) 2005-05-09 23:26:00 得分:0
? 偶帮你UP...
Top