Sie können davon profitieren, dass SQL Server 2008 jetzt Tabellentypen unterstützt. Sie können einen Tabellentyp definieren und auf der .net-Seite eine DataTable
erstellen und übergeben Sie das als Parameter an Ihre gespeicherte Prozedur. Auf der SP-Seite ist dieser Parameter vom Typ [welcher Tabellentyp Sie auch immer gemacht haben]. Hier ist ein Beispiel.
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));
Sie können dann Positionen als Parameter für Ihre gespeicherte Prozedur anhängen
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
In Ihrer Datenbank müssen Sie einen Tabellentyp als
definierenCREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
und in Ihrer gespeicherten Prozedur hinzufügen
@MyPositions Positions Readonly
Jetzt können Sie @MyPositions
behandeln als Tabelle in Ihre Prozedur einfügen und damit vergleichen.