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

SQL MERGE कथन परिणाम निर्धारित करना

आप क्या कर सकते हैं एक अस्थायी तालिका (या एक तालिका चर) बनाएं और वहां अपना आउटपुट भेजें - अपने OUTPUT खंड में कुछ सार्थक फ़ील्ड जोड़ें ताकि यह स्पष्ट हो सके कि कौन सी पंक्ति किस क्रिया से प्रभावित हुई थी:

DECLARE @OutputTable TABLE (Guid UNIQUEIDENTIFIER, Action VARCHAR(100))

MERGE INTO TestTable as target
USING ( select '00D81CB4EA0842EF9E158BB8FEC48A1E' )
AS source (Guid)
ON ( target.Guid = source.Guid ) 
WHEN MATCHED THEN
UPDATE SET Test_Column = NULL
WHEN NOT MATCHED THEN
INSERT (Guid, Test_Column) VALUES ('00D81CB4EA0842EF9E158BB8FEC48A1E', NULL)
OUTPUT INSERTED.Guid, $action INTO @OutputTable

SELECT
   Guid, Action
FROM
   @OutputTable

अद्यतन करें: आह, ठीक है, तो आप इसे .NET से कॉल करना चाहते हैं! ठीक है, उस स्थिति में, बस इसे .ExecuteReader() . का उपयोग करके कॉल करें आपके SqlCommand . पर विधि ऑब्जेक्ट - वह सामग्री जिसे आप OUTPUT... . का उपयोग करके आउटपुट कर रहे हैं परिणाम सेट के रूप में .NET कॉलर को वापस कर दिया जाएगा - आप इसके माध्यम से लूप कर सकते हैं:

using(SqlCommand cmd = new SqlCommand(mergeStmt, connection))
{
   connection.Open();

   using(SqlDataReader rdr = cmd.ExecuteReader())
   {
      while(rdr.Read())
      {
         var outputAction = rdr.GetValue(0);
      }

      rdr.Close();
   }
   connection.Close();
}

आपको उस डेटा रीडर से परिणामी "$action" वापस मिल जाना चाहिए।




  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 PARTITION BY क्लॉज का उपयोग कब और कैसे करें

  2. SQL सर्वर में SUM () फ़ंक्शन

  3. बेसिक pyodbc बल्क इंसर्ट

  4. CTE का उपयोग करके SQL सर्वर क्वेरी आउटपुट के लिए अनुपलब्ध तिथियां भरें

  5. SQL सर्वर डेटाबेस कॉल के साथ मल्टी थ्रेडिंग C# एप्लिकेशन