Vous pouvez tirer parti du fait que SQL Server 2008 prend désormais en charge les types de table. Vous pouvez définir un type de table et côté .net construire un DataTable
et transmettez-le en tant que paramètre à votre procédure stockée. Du côté SP, ce paramètre est de type [quel que soit le type de table que vous avez créé] Voici un exemple.
TotalPositions = [Some List] //of CSV List
DataTable Positions = new DataTable(); //Create the Datatype
Positions.Columns.Add("PositionID", typeof(int)); //
foreach (string sPos in TotalPositions.Split(','))
Positions.Rows.Add(int.Parse(sPos));
Vous pouvez ensuite ajouter des positions en tant que paramètre de votre procédure stockée
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
Dans votre base de données, vous devez définir un type de table comme
CREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
et dans votre procédure stockée ajoutez
@MyPositions Positions Readonly
Vous pouvez maintenant traiter @MyPositions
sous forme de tableau dans votre procédure et comparez-le.