我有一个字符串列表,我需要检查列表中的任何值是否包含在数据库表中。如果存在返回现有值的数据集。将列表<string>传递给存储过程
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
我需要知道我怎么有列表传递到存储过程和如何与步骤检查清单。 PLZ帮助
多少记录你期望的字符串变量可以有? – Pankaj 2012-04-09 14:41:50
您是否可以控制存储过程,即是否允许更改它?您需要修改存储过程以使用表值参数(http://mindlesspassenger.wordpress.com/2011/05/09/table-valued-parameters-codefirst-and-stored-procedures-3/), xml,或者使用动态sql将列表包含到查询中。或者您将不得不为列表中的每个元素调用一次存储过程,这对于大型列表来说效率不高。 – mellamokb 2012-04-09 14:42:37