Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

संग्रहित प्रक्रिया में बहु-मान दिनांक पैरामीटर?

टेबल-वैल्यूड पैरामीटर का उपयोग क्यों न करें ?

एक उपयोगकर्ता-परिभाषित तालिका-प्रकार बनाएं 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 प्रकार भी; आप टीवीपी से जुड़ जाएंगे और हर जगह उनका इस्तेमाल करेंगे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL नेटवर्क इंटरफेस, त्रुटि:50 - स्थानीय डेटाबेस रनटाइम त्रुटि हुई। एक स्वचालित उदाहरण नहीं बना सकता

  2. सी # में संग्रहीत प्रक्रिया आउटपुट पैरामीटर का उपयोग करना

  3. न्यूल के बजाय मैं चयन कथन एसक्यूएल के परिणामस्वरूप `0` कैसे दिखा सकता हूं?

  4. SQL 2005/2008 में दोहरे उद्धरण चिह्नों से बचें

  5. SQL सर्वर में क्वेरी कैप्चर करने के लिए XEvent Profiler का उपयोग करें