आप अपने मर्ज स्टेटमेंट पर एक आउटपुट क्लॉज निर्दिष्ट कर सकते हैं और MERGE के दौरान किए गए कार्यों की आउटपुट रिपोर्ट प्राप्त कर सकते हैं।
MERGE (targetTable) AS t
USING (sourceTable) AS s
ON t.ID = s.ID
WHEN MATCHED THEN
(some statements)
WHEN NOT MATCHED THEN
(some statements)
OUTPUT
$action, inserted.ID 'inserted', deleted.ID 'deleted'
;
यह आपको प्रत्येक ऑपरेशन के लिए प्रत्येक "कार्रवाई" (सम्मिलित, अद्यतन, हटाएं) के लिए एक पंक्ति देगा। यदि यह बहुत सारे कथन हैं, तो आप @tableVar में भी आउटपुट कर सकते हैं और फिर टेबल वैरिएबल को देख सकते हैं। MERGE बयान और OUTPUT clause पर जानकारी के लिए बाहर पुस्तकें ऑनलाइन
DECLARE @tableVar TABLE (MergeAction VARCHAR(20), InsertedID INT, DeletedID INT)
MERGE (targetTable) AS t
USING (sourceTable) AS s
ON t.ID = s.ID
WHEN MATCHED THEN
(some statements)
WHEN NOT MATCHED THEN
(some statements)
OUTPUT
$action, inserted.ID 'inserted', deleted.ID 'deleted' INTO @tableVar
;
SELECT MergeAction, COUNT(*)
FROM @tableVar
GROUP BY MergeAction
चेक।
मार्क
स्रोत
2009-08-12 20:33:27
क्या संभवतः एक समूह में ऐसा करने के लिए संभवतः एक समूह में ऐसा करना संभव है? ताकि आउटपुट बिट> आउटपुट $ ACTION, COUNT (1) $ ACTION द्वारा समूह के साथ कुछ प्रकार का होगा? – eidylon
नहीं, आप यह नहीं कर सकते हैं। आप या तो बस एसएसएमएस आउटपुट विंडो में या टेबल वैरिएबल में आउटपुट कर सकते हैं - आउटपुट खंड को ओवर-स्ट्रेच न करें !! :-) –
आह अच्छी तरह से ... असल में, क्या OUTPUT ने टेबल वैरिएबल, या परिणामसेट डाला है? स्रोत के रूप में (एक सबक्वायरी के रूप में) के रूप में एक SELECT कथन के अंदर एक OUTPUT खंड के साथ MERGE कथन को लपेटना संभव होगा और फिर उस बाहरी चयन को एकत्रीकरण करना होगा? ... संभव लगता है। मुझे इसके साथ खेलना पड़ सकता है। – eidylon