टेबल-वैल्यूड पैरामीटर का उपयोग क्यों न करें ?
एक उपयोगकर्ता-परिभाषित तालिका-प्रकार बनाएं DateTimes
एसक्यूएल पर
create type DateTimes as table
(
[Value] datetime
)
फिर अपनी संग्रहित प्रक्रिया में संशोधन करें:
ALTER PROCEDURE spSelectPlacementData
(
@ClientID SMALLINT,
@SourceFileDates DateTimes readonly -- must be readonly
)
अब आप @SourceFileDates
. का इलाज कर सकते हैं केवल पढ़ने योग्य तालिका-चर के रूप में।
अपना SqlCommand
निर्दिष्ट करते समय पैरामीटर, तालिका-मान पैरामीटर को SqlDbType.Structured
और एक DataTable
के रूप में पास हुआ
या DataRowcollection
. तो, आप इसे इस तरह से पॉप्युलेट कर सकते हैं:
var sourceFileDates = new DataTable();
sourceFileDates.Columns.Add("Value", typeof(DateTime));
foreach (DateTime file in job.sourceFiles)
{
sourceFileDates.Rows.Add(file);
}
selectRunCommand.Parameters.Add(new SqlParameter {
ParameterName = "@SourceFileDates",
Value = sourceFileDates,
SqlDbType = SqlDbType.Structured // make sure you specify structured
});
अब सब कुछ अच्छा है और ठीक से टाइप किया गया है... और आपको कोई स्ट्रिंग पार्सिंग या कास्टिंग करने की आवश्यकता नहीं है।
एक साइड-नोट के रूप में, आप आगे बढ़ सकते हैं और Strings
. बना सकते हैं और Integers
प्रकार भी; आप टीवीपी से जुड़ जाएंगे और हर जगह उनका इस्तेमाल करेंगे।