【发布时间】:2015-10-06 02:30:01
【问题描述】:
我正在使用存储过程搜索 SQL Server 数据库。我让它在搜索房屋名称的文本框的转发器中完美显示。在代码中,您可以看到它会查找一个存储过程来进行搜索。任何人都可以帮助如何将两个存储过程合二为一吗?它们都单独工作,但我需要让一个存储过程能够进行两种搜索。标记为townland 的下拉列表是单独的。
代码:
public void DisplaySearchResults(string strSearch)
{
// Display search results in repeater
SqlCommand cmd = new SqlCommand("spiSearchByString", new SqlConnection("Data Source=MAYDDD;Initial Catalog=HOB;Persist Security Info=True;User ID=ID; Password=password"));
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@SearchString", strSearch);
cmd.Connection.Open();
rptDataSearch.DataSource = cmd.ExecuteReader();
rptDataSearch.DataBind();
}
搜索名字的存储过程:
CREATE PROCEDURE dbo.spiSearchByString
@SearchString varchar(50)
AS
SELECT
Houses.Name, Houses.Id, Houses.Townland,
Houses.Near, Houses.Status, Houses.Built, Houses.Image
FROM
Houses
WHERE
(Houses.Name LIKE '%' + @SearchString + '%' OR
Houses.Id LIKE '%' + @SearchString + '%')
ORDER BY
Houses.Name
RETURN
搜索附近的存储过程:
CREATE PROCEDURE dbo.NearSearch
@SearchString varchar(50)
AS
SELECT
Houses.Name, Houses.Id, Houses.Townland, Houses.Near,
Houses.Status, Houses.Built, Houses.Image
FROM
Houses
WHERE
(Houses.Near LIKE '%' + @SearchString + '%'
OR Houses.Id LIKE '%' + @SearchString + '%')
ORDER BY
Houses.Name
RETURN
【问题讨论】:
-
您使用的是什么 SQL 服务器和版本? .NET 框架版本和 ASP.NET 版本是什么?
-
使用 SQL server 2008 和 .Net 4.5 @cxw
-
您的意思是应该始终执行这两个搜索吗?或者你的意思是你想要一个可以处理两个搜索的单一过程。即用户只会执行“Near”或“Name”搜索,但 proc 会处理两者。
-
或者您是否想要一个存储过程返回同时符合 Name 和 Near 条件(如果有)的房屋?
-
是的,你有它。我正在寻找如何编写一个存储过程来返回同时符合 Name 和 Near 条件(如果有的话)的房屋。这两个存储过程我已经单独完美地工作了,所以如果有办法将它们结合起来。 @cxw
标签: sql asp.net sql-server search stored-procedures