Możesz skorzystać z faktu, że SQL Server 2008 obsługuje teraz typy tabel. Możesz zdefiniować typ tabeli i po stronie .net skonstruować DataTable
i przekaż go jako parametr do procedury składowanej. Po stronie SP ten parametr jest typu [niezależnie od tego, jaki typ tabeli utworzyłeś] Oto przykład.
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));
Następnie możesz dodać pozycje jako parametr procedury składowanej
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
W swojej bazie danych musisz zdefiniować typ tabeli jako
CREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
i w procedurze składowanej dodaj
@MyPositions Positions Readonly
Teraz możesz leczyć @MyPositions
jako tabelę w swojej procedurze i porównaj z nią.