आप संग्रहीत कार्यविधि को संशोधित किए बिना नहीं कर सकते।
SQL सर्वर में, आप केवल INSERT...EXEC
के माध्यम से किसी अन्य तालिका में संग्रहीत कार्यविधि का पहला परिणाम सेट सम्मिलित कर सकते हैं . कॉलम की संख्या और स्थिति बिल्कुल मेल खाना चाहिए, और INSERT...EXEC
नेस्टेड नहीं किया जा सकता है, यानी आप proc1 से proc2 में एक तालिका में सम्मिलित नहीं कर सकते हैं, और फिर proc2 से proc3 में एक तालिका में सम्मिलित कर सकते हैं। तो INSERT...EXEC
पूरी तरह से असंतोषजनक समाधान है।
वर्कअराउंड कॉलिंग स्कोप में परिभाषित अस्थायी तालिकाओं में परिणाम सम्मिलित करने की प्रक्रिया को संशोधित करता है, जैसे:
create proc get_some_data as
insert #temp1 (col1, col2) select col1, col2 from table1
insert #temp2 (colA, colB) select colA, colB from table2
go
create table #temp1 (col1 int, col2 int)
create table #temp2 (colA int, colB int)
exec get_some_data
select * from #temp1
select * from #temp2
drop table #temp1
drop table #temp2
go
यदि आप प्रक्रिया को संशोधित नहीं कर सकते हैं, आप भाग्य से बाहर हैं। सुधार :जैसा कि HABO ने कृपया बताया, आप कर सकते थे परिणाम सेट को पुनरावृत्त करने के लिए सीएलआर का उपयोग करें। विवरण के लिए नीचे लिंक देखें। बहुत बुरा नहीं है यदि आप जानते हैं कि आप क्या कर रहे हैं, और आपके पास कोई अन्य विकल्प नहीं है।
संग्रहीत प्रक्रियाओं के बीच डेटा साझा करने के बारे में अधिक जानकारी के लिए, एरलैंड सोमरस्कोग द्वारा यह बहुत व्यापक लेख देखें:http:// www.sommarskog.se/share_data.html