आप इस तथ्य का लाभ उठा सकते हैं कि 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
. का इलाज कर सकते हैं अपनी प्रक्रिया में एक तालिका के रूप में और इसकी तुलना करें।