आप क्या कर सकते हैं एक अस्थायी तालिका (या एक तालिका चर) बनाएं और वहां अपना आउटपुट भेजें - अपने 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" वापस मिल जाना चाहिए।