SQL Server 2008 या बाद के संस्करण को SQL सर्वर में मानकर, एक बार तालिका प्रकार बनाएँ:
CREATE TYPE dbo.ColumnBValues AS TABLE
(
ColumnB INT
);
फिर एक संग्रहित प्रक्रिया जो इनपुट के रूप में इस तरह के प्रकार लेती है:
CREATE PROCEDURE dbo.whatever
@ColumnBValues dbo.ColumnBValues READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT A.* FROM dbo.TableA AS A
INNER JOIN @ColumnBValues AS c
ON A.ColumnB = c.ColumnB;
END
GO
अब सी # में, डेटाटेबल बनाएं और इसे संग्रहीत प्रक्रिया के पैरामीटर के रूप में पास करें:
DataTable cbv = new DataTable();
cbv.Columns.Add(new DataColumn("ColumnB"));
// in a loop from a collection, presumably:
cbv.Rows.Add(someThing.someValue);
using (connectionObject)
{
SqlCommand cmd = new SqlCommand("dbo.whatever", connectionObject);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter cbvParam = cmd.Parameters.AddWithValue("@ColumnBValues", cbv);
cbvParam.SqlDbType = SqlDbType.Structured;
//cmd.Execute...;
}
(हो सकता है कि आप इस प्रकार को और अधिक सामान्य बनाना चाहें, मैंने इसे विशेष रूप से यह स्पष्ट करने के लिए नाम दिया है कि यह क्या कर रहा है।)