Можете да се възползвате от факта, че SQL Server 2008 вече поддържа типове таблици. Можете да дефинирате тип таблица и от страната на .net да конструирате DataTable
и го предайте като параметър на вашата съхранена процедура. От страна на SP този параметър е от тип [какъвто и тип таблица да сте направили] Ето един пример.
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));
След това можете да добавите позиции като параметър за вашата съхранена процедура
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
Във вашата база данни трябва да дефинирате тип таблица като
CREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
и във вашата съхранена процедура добавете
@MyPositions Positions Readonly
Сега можете да третирате @MyPositions
като таблица във вашата процедура и сравнете с нея.