È possibile sfruttare il fatto che SQL Server 2008 ora supporta i tipi di tabella. Puoi definire un tipo di tabella e sul lato .net costruire una DataTable
e passalo come parametro alla tua procedura memorizzata. Sul lato SP quel parametro è di tipo [qualunque tipo di tabella tu abbia creato] Ecco un esempio.
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));
È quindi possibile aggiungere posizioni come parametro per la procedura memorizzata
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
Nel tuo database devi definire un tipo di tabella come
CREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
e nella procedura memorizzata aggiungi
@MyPositions Positions Readonly
Ora puoi trattare @MyPositions
come tabella nella tua procedura e confrontala con essa.