Ich habe eine String-Liste und ich muss überprüfen, ob einer der Werte in der Liste in der Datenbanktabelle enthält. Gibt den Datensatz der vorhandenen Werte zurück.Übergeben einer Liste <string> an eine gespeicherte Prozedur
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;
}
Meine gespeicherte Prozedur ist
CREATE PROCEDURE spCheckDocNumber
@DocNumber VARCHAR(MAX)
AS
BEGIN
SELECT * FROM tblDocumentHeader WHERE DocumentNumber = @DocNumber
END
Ich muss wissen, dass, wie muss ich die Liste der gespeicherten Prozedur übergeben und wie die Liste zu überprüfen, mit in dem Verfahren. plz Hilfe
Wie viele Datensätze erwarten Sie die String-Variable haben kann? – Pankaj
Haben Sie die Kontrolle über die gespeicherte Prozedur, d. H., Dürfen Sie sie ändern? Sie müssten Ihre gespeicherte Prozedur ändern, um entweder Tabellenwerte zu verwenden (http://mindlesspassenger.wordpress.com/2011/05/09/table-valued-parameters-codefirst-and-stored-procedures-3/), XML, oder schließen Sie die Liste in die Abfrage mit dynamic sql ein. Oder Sie müssen die gespeicherte Prozedur einmal für jedes Element in der Liste aufrufen, was für große Listen ineffizient ist. – mellamokb