आश्चर्यचकित कोई भी आपको एक अद्यतित उत्तर नहीं देता है। कर्सर खराब हैं। आप जो चाहते हैं वह एसपी के तर्क को table-valued-function(TVF) and then use CROSS APPLY
यहां एक प्रश्न है जिसे मैंने कल लिखा था (विवरण पर ध्यान न दें, बस CROSS APPLY
देखें)। CROSS APPLY
टेबल का एक संघ बनाता है। इस संघ का प्रत्येक तत्व टीवीएफ से उत्पन्न होता है जिसे चयन कथन की पंक्ति प्रविष्टियों पर पैरामीटर किया जाता है।
SELECT supt.hostname,supt.scriptname, COUNT(*)
FROM Event_Pagehit eph
INNER JOIN Symboltable_urlpair supf
ON eph.fromPagePair=supf.id
INNER JOIN Symboltable_urlpair supt
ON supt.id=eph.toPagePair
CROSS APPLY dbo.TDFCompanyFormationsUrlClassification(supf.hostname,supf.scriptname) as x
CROSS APPLY dbo.TDFCompanyFormationsUrlClassification(supt.hostname,supt.scriptname) as y
WHERE x.isCompanyFormations=1
AND y.isCompanyFormations=0
GROUP BY supt.hostname,supt.scriptname
ORDER BY COUNT(*) desc
मैं x
और y
उपयोग कर सकते हैं जैसे कि वे थे टेबल FROM
या JOIN
खंड से हासिल कर लिया। अगर मुझे टीवीएफ के बिना यह प्रश्न लिखना पड़ा तो यह कुछ सौ लाइनों तक फैल जाएगा।
नोट:
आप को फिर से लिखने नहीं कर सकते सपा: यदि आप एक मेज महत्वपूर्ण समारोह से परिणाम तालिका में एक संग्रहीत प्रक्रिया का परिणाम सम्मिलित करने के लिए सक्षम होना चाहिए। मैंने कभी ऐसा नहीं किया है, और कभी-कभी अलग-अलग SQL सर्वर निर्माण में चेतावनी होती है - इसलिए जब तक कि कोई अन्य कहता है, मुझे लगता है कि यह मामला है।
स्रोत
2010-01-17 23:10:00
हर कोई पुनरावृत्ति से बचने के लिए भीख मांग रहा है (कर्सर या समय)। Sproc क्या करता है, तो हम एक सेट आधारित समाधान परिभाषित कर सकते हैं? – Precipitous
मैंने अपना सेट आधारित दृष्टिकोण अन-हटा दिया है - पहले जल्दी में था और अंत में बिना 'नोट' के इसे रखना चाहता था। –