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

एक संग्रहीत कार्यविधि से अस्थायी तालिका में सम्मिलित करें जो एकाधिक परिणाम सेट लौटाती है

पुरानी पोस्ट, लेकिन मुझे उसी समस्या का सामना करना पड़ा और यद्यपि ऊपर वर्णित उत्तर थोड़ा संबंधित हैं, ओपी का प्रश्न एसपी के बारे में है जो कई सेट देता है। एसपी को छोटे एसपी में विभाजित करने के लिए फिर से लिखने के अलावा, मुझे केवल एक ही समाधान मिल सकता था, एक SQL CLR लिखना था। प्रक्रिया जो एसपी को निष्पादित करती है और केवल आवश्यक परिणाम सेट लौटाती है। प्रक्रिया आवश्यक परिणाम सेट की अनुक्रमणिका प्राप्त करती है, एक SqlCommand निष्पादित करती है प्रारंभिक T-SQL चलाने के लिए SP, फिर एक SqlDataReader . के माध्यम से लूप करता है परिणाम तब तक मिलता है जब तक कि वह वांछित परिणाम सेट नहीं पाता और संबंधित रिकॉर्ड नहीं लौटाता। निम्नलिखित कोड SQL CLR का हिस्सा है प्रक्रिया:

SqlDataReader rdr = command.ExecuteReader();
int index = 0;
bool bContinue = true;
while (index < resultSetIndex.Value)
{
    if (!rdr.NextResult())
    {
        bContinue = false;
        break;
    }
    index++;
}
if (!bContinue)
    throw new Exception("Unable to read result sets.");

.......

List<SqlMetaData> metadataList = new List<SqlMetaData>();
for (int i = 0; i < rdr.FieldCount; i++)
{
    string dbTypeName = rdr.GetDataTypeName(i);
    SqlMetaData metadata;
    if (dbTypeName.ToLower().Contains("char"))
        metadata = new SqlMetaData(rdr.GetName(i), (SqlDbType)Enum.Parse(typeof(SqlDbType), dbTypeName, true), 50);
    else
        metadata = new SqlMetaData(rdr.GetName(i), (SqlDbType)Enum.Parse(typeof(SqlDbType), dbTypeName, true));
    metadataList.Add(metadata);
}
SqlDataRecord record = new SqlDataRecord(metadataList.ToArray());
object[] values = new object[rdr.FieldCount];
if (rdr.HasRows)
{
    SqlContext.Pipe.SendResultsStart(record);
    while (rdr.Read())
    {
        rdr.GetValues(values);
        record.SetValues(values);
        SqlContext.Pipe.SendResultsRow(record);
    }
    SqlContext.Pipe.SendResultsEnd();
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं कैसे जांचूं कि एक एसक्यूएल सर्वर स्ट्रिंग शून्य या खाली है या नहीं?

  2. यदि पैरामीटर शून्य है तो SQL सभी का चयन करें अन्यथा विशिष्ट आइटम लौटाएं

  3. विभाजन स्विचिंग का उपयोग करके कम रुकावट के साथ SQL सर्वर तालिकाओं को ताज़ा करना

  4. पिवोटेड कॉलम का योग कैसे करें और इसे दूसरे पिवोटेड कॉलम में कैसे जोड़ें

  5. SQL सर्वर इस त्रुटि को क्यों फेंक रहा है:मान NULL को कॉलम 'id' में सम्मिलित नहीं कर सकता?