Du kan drage fordel af, at SQL Server 2008 nu understøtter tabeltyper. Du kan definere en tabeltype og på .net-siden konstruere en DataTable
og send det som en parameter til din lagrede procedure. På SP-siden er denne parameter af typen [uanset hvilken tabeltype du har lavet] Her er et eksempel.
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));
Du kan derefter tilføje positioner som en parameter for din lagrede procedure
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
I din database skal du definere en tabeltype som
CREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
og i din lagrede procedure tilføje
@MyPositions Positions Readonly
Nu kan du behandle @MyPositions
som en tabel i din procedure og sammenlign med den.