U kunt profiteren van het feit dat SQL Server 2008 nu tabeltypen ondersteunt. U kunt een tabeltype definiëren en aan de .net-kant een DataTable
maken en geef dat door als parameter aan uw opgeslagen procedure. Aan de SP-kant is die parameter van het type [wat voor tafeltype je ook hebt gemaakt] Hier is een voorbeeld.
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));
U kunt dan Posities toevoegen als parameter voor uw opgeslagen procedure
SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions
command.Parameters.Add(Param);
In uw database moet u een tabeltype definiëren als
CREATE TYPE [dbo].[Positions] AS TABLE(
[Position] int NULL,
)
GO
en in uw opgeslagen procedure toevoegen
@MyPositions Positions Readonly
Nu kunt u @MyPositions
. behandelen als een tabel in uw procedure en vergelijk ermee.