2012-04-12 11 views
5

मेरे पास एक संग्रहित प्रक्रिया है जो दो चयन देता है, जिसका उपयोग मैं एक रिपोर्ट में करता हूं। sproc गणना काफी गहन हैकैसे चुनें [temp table1] = [subselect 1], [temp table2] = [subselect 2] [संग्रहीत प्रक्रिया] से

CREATE PROCEDURE dbo. GetReport  
@Input INT 
AS 
BEGIN   
    --Get #Metadata  
    -- #Results = f(#Metadata) … compex calculation   
    SELECT * FROM #Results  
    SELECT * FROM #Metadata  
END 

रूप में, मैं रिपोर्ट लाइनों तैयार करने के लिए करना चाहते हैं: पहले चयन मेटाडाटा तालिका प्रारूप और दूसरे में प्रदर्शित करने के लिए डेटा कर रहे हैं रिपोर्ट सिर में प्रदर्शित करने के लिए, की तरह नीचे से पता चला है सादा डेटा के रूप में (दो तालिकाओं में: PrecalcResults और PrecalcMetadata) कुछ अधिकतर इस्तेमाल किए गए स्पोक पैरामीटर रातोंरात के लिए। लादर मैं पैरामीटर के अनुसार सीधे prealculated vaues का चयन या sproc के साथ उनकी गणना करेंगे।

रखरखाव कारणों के लिए मैं डेटा है कि हो सकता है की गणना करने के लिए एक ही sproc उपयोग करना चाहते हैं: 1. रिपोर्ट 2. (इस्तेमाल किया मानकों के साथ) PrecalcResults और PrecalcMetadata में संग्रहित किया जा

में पता चला है मैं तो एक सिंगल सिलेक्ट स्प्रोक होगा, मैं यहां एक दृष्टिकोण चाहता हूं: Insert results of a stored procedure into a temporary table

जैसा कि मेरे पास बहुउद्देश्यीय sproc है, मैं ऊपर की तरह कुछ करना चाहता हूं लेकिन दो तालिकाओं के साथ। .NET में मैं डेटासेट टेबल्स [0] और डेटासेट टेबल्स [1] करूँगा ..., लेकिन मैं इसे दैनिक नौकरी में चलाने के लिए tsql में करना चाहता हूं।

क्या यह एमएस एसक्यूएल में भी संभव है?


मुझे नीचे दिए गए उत्तर से माफी माँगनी है, मैं देख सकता हूं कि मैं बहुत स्पष्ट नहीं था। मैं इस कार्यक्षमता को शुद्ध टीएसक्यूएल के रूप में कार्यान्वित करना चाहता हूं।

+0

"कई सक्रिय recordsets" (उर्फ मंगल) के लिए खोज का प्रयास करें। आपको एक रिकॉर्डसेट से अगले में जाने के लिए 'NextRecordset' विधि का उपयोग करने की आवश्यकता होगी। – HABO

उत्तर

2

हां, यह संभव है।

It's perfectly fine to return multiple result sets from a single stored procedure as you have suggested.

आपका केवल संभावित मुद्दा है, एक TableAdapter संग्रहीत प्रक्रिया से दोनों परिणाम सेट खींचने के लिए सक्षम होने की सीमा है but there's a very simple work-around for that issue.

+0

जब तक यह एक temp तालिका न हो, तो यह नहीं मिलेगा क्योंकि यह केवल सर्वर पर मौजूद है – Taryn

+0

@bluefeet यह मेरा अनुभव नहीं रहा है ... यह आपके डेटा एक्सेस लेयर के साथ कोई समस्या हो सकती है, या संदर्भ देने का प्रयास कर सकती है अस्थायी कनेक्शन पर अस्थायी तालिका ... यह क्लाइंट के लिए अदृश्य होना चाहिए चाहे किसी चयनित कथन का स्रोत अस्थायी या गैर-अस्थायी तालिका हो। –

+0

वैसे यह इस बात पर निर्भर करता है कि आप इसका उपयोग कैसे कर रहे हैं, अगर आपके पास एक संग्रहित प्रो में डेटा लौटने वाला एक सारणी तालिका है और आप संग्रहीत प्रक्रिया को DataSet.xsd फ़ाइल में जोड़ते हैं। मेरा अनुभव यह है कि यह उस बिंदु पर अस्थायी तालिका से अवगत नहीं है क्योंकि यह केवल – Taryn

संबंधित मुद्दे