【发布时间】:2012-04-09 14:37:15
【问题描述】:
我有一个字符串列表,我需要检查列表中的任何值是否包含在数据库表中。如果存在则返回现有值的数据集。
public DataSet CheckDocumentNumber(List<string> DocNumber)
{
DataSet DocNum = new DataSet();
SqlTransaction transaction = DALDBConnection.SqlConnection.BeginTransaction();
try
{
string[] taleNames = new string[1];
taleNames[0] = "DocNum";
SqlParameter[] param = new SqlParameter[1];
param[0] = new SqlParameter("@DocNumber", DocNumber);
SqlHelper.FillDataset(transaction, CommandType.StoredProcedure, "spCheckDocNumber", DocNum, taleNames, param);
transaction.Commit();
}
catch (Exception e)
{
transaction.Rollback();
}
return DocNum;
}
我的存储过程是
CREATE PROCEDURE spCheckDocNumber
@DocNumber VARCHAR(MAX)
AS
BEGIN
SELECT * FROM tblDocumentHeader WHERE DocumentNumber = @DocNumber
END
我需要知道如何将列表传递给存储过程以及如何在过程中检查列表。请帮忙
【问题讨论】:
-
您希望 String 变量可以有多少条记录?
-
您是否可以控制存储过程,即是否可以更改它?您需要修改存储过程以使用表值参数 (mindlesspassenger.wordpress.com/2011/05/09/…)、xml,或者使用动态 sql 将列表包含到查询中。或者您必须为列表中的每个元素调用一次存储过程,这对于大型列表来说效率很低。
标签: asp.net sql-server stored-procedures