sql-server - SQL सर्वर:अलग-अलग टेबल में संग्रहीत कार्यप्रणाली से मल्टी-टेबल आउटपुट डालना




tsql stored-procedures (2)

मेरे पास एक संग्रहित प्रक्रिया है जो कई तालिकाओं (वर्तमान में एक वेब सेवा द्वारा खपत) देता है। अब मुझे उस आउटपुट को एक SQL सर्वर डेटाबेस में सम्मिलित करना होगा

यदि मुझे मौजूदा परिभाषा के माध्यम से पता है तो मैं एक एकल तालिका सम्मिलित कर सकता हूँ I

INSERT INTO #temp
    EXEC ('myProcSQlhere')

लेकिन इसके लिए मुझे आउटपुट तालिका की परिभाषा अग्रिम में जानना चाहिए।

SELECT *
INTO #temp
FROM OPENQUERY(SERVERNAME, 'EXEC myProcSQlhere')

जो तालिका की परिभाषा को जानने के आसपास हो जाता है, लेकिन केवल एक तालिका में प्रवेश की अनुमति देता है। तो मैं एक से अधिक तालिकाओं में डेटा कैसे सम्मिलित करूं?


Answers

एक संग्रहीत कार्यविधि केवल एक मान वापस कर सकती है। आपकी संग्रहीत कार्यविधि क्या कई चयन कर रही है और इसलिए कई परिणाम सेट दे रही है। यह सिस्टम के लिए काम करता है जो कई परिणाम सेट का उपभोग कर सकता है लेकिन आप एसक्यूएल-सर्वर में फंस रहे हैं

जांचें कि क्या संग्रहीत कार्य प्रत्येक परिणाम सेट के लिए पहले से ही स्वतंत्र संग्रहित प्रक्रियाओं को नहीं कॉल करता है और यदि ऐसा है, तो उन पर कॉल करें या संग्रहीत कार्यप्रणाली की परिभाषा का उपयोग करें और प्रत्येक क्वेरी को क्रमिक रूप से प्रयुक्त किए गए कॉल करें।

यदि आपके पास संग्रहीत कार्यप्रणाली प्रदान करने वाली प्रणाली तक कोई पहुंच नहीं है, तो आपको सीएलआर संग्रहित प्रक्रिया को लागू करने और परिणामों को अलग-अलग तालिकाओं में स्टोर करने के लिए प्रत्येक परिणाम सेट को लाने की आवश्यकता होगी।


यह नीचे दिए गए कोड द्वारा किया जा सकता है।

CREATE TABLE TestTable
    (FirstCol INT NOT NULL)
    GO
    ------------------------------
    -- Option 1
    ------------------------------
    -- Adding New Column
    ALTER TABLE TestTable
    ADD SecondCol INT
    GO
    -- Updating it with Default
    UPDATE TestTable
    SET SecondCol = 0
    GO
    -- Alter
    ALTER TABLE TestTable
    ALTER COLUMN SecondCol INT NOT NULL
    GO




sql sql-server tsql stored-procedures