【发布时间】:2011-11-18 12:24:23
【问题描述】:
首先尝试这样的查询
SELECT *
FROM CUSTOMER
WHERE LEFT(NAME, 1) = 'A'
效果很好,但现在我希望它作为一个存储过程,并将“A”替换为这样的搜索词
CREATE PROCEDURE [dbo].[procCustomer_SelectByFirstLetter]
@SearchTerm VARCHAR(50)
AS
SELECT [Name]
FROM [dbo].[Customer]
WHERE LEFT(NAME, 1) = '@SearchTerm'
GO
此存储过程由 C# 方法调用,该方法使用包含所有字母 A-Z 的下拉列表
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable customerTable = Customer.SelectByFirstLetter(Request.QueryString[DropDownList1.SelectedValue.ToString()]);
CustomerRepeater.DataSource = customerTable;
CustomerRepeater.DataBind();
CustomerCountLabel.Text = customerTable.Rows.Count.ToString();
}
当我从下拉列表中选择一个字母时,Reapter 什么也没有显示。有任何想法吗?谢谢!
【问题讨论】:
-
去掉变量名两边的单引号
-
您需要考虑搜索词的长度。 IE,你不能在SP里做LEFT(xxx,1)。
-
见下面我的帖子。也是大卫的最后一次编辑。