यह एक पुरानी पोस्ट है, लेकिन यह शीर्ष के पास था जब मैं "संग्रहीत प्रक्रिया के लिए आउटपुट पैरामीटर के रूप में टेबल-वेलिड पैरामीटर" की खोज कर रहा था। हालांकि यह मेरी समझ है कि आप आउटपुट पैरामीटर के रूप में एक टेबल-वैल्यू पैरामीटर को पास नहीं कर सकते हैं, मुझे लगता है कि लक्ष्य एक अन्य प्रक्रिया में टेबल-वैल्यू आउटपुट पैरामीटर के रूप में टेबल-वैल्यू आउटपुट पैरामीटर का उपयोग करना है। मैं एक उदाहरण दिखाऊंगा कि मैंने यह कैसे काम किया।
सबसे पहले, साथ काम करने के लिए कुछ डेटा बनाएं:
create table tbl1
(
id int,
fname varchar(10),
gender varchar(10)
);
create table tbl2
(
id int,
lname varchar(10)
);
insert into tbl1
values
(1,'bob' ,'m'),
(2,'tom' ,'m'),
(3,'sally','f')
;
insert into tbl2
values
(1,'jones' ),
(2,'johnson' ),
(3,'smith' )
;
इसके बाद, कुछ डेटा को कैप्चर करने के लिए एक संग्रहीत कार्यविधि बनाएं। आम तौर पर, यह वह जगह होगी जहां आप एक टेबल-वैल्यू आउटपुट पैरामीटर बनाने की कोशिश कर रहे हैं।
create procedure usp_OUTPUT1
@gender varchar(10)
as
Begin
select id from tbl1 where gender = @gender
End
इसके अतिरिक्त, आप एक डेटा प्रकार (तालिका प्रकार) बनाना चाहेंगे जहां पहली संग्रहीत प्रक्रिया से डेटा को अगले संग्रहीत कार्यविधि के लिए इनपुट पैरामीटर के रूप में पारित किया जा सकता है।
create type tblType as Table (id int)
इसके बाद, दूसरी संग्रहीत प्रक्रिया बनाएं जो तालिका-मूल्यवान पैरामीटर को स्वीकार करेगी।
create procedure usp_OUTPUT2
@tblType tblType readonly --referencing the type created and specify readonly
as
begin
select lname from tbl2 where id in (select id from @tblType)
end
दी गई, यह एक सही तालिका-मूल्यवान आउटपुट पैरामीटर नहीं है, लेकिन यह संभवतः आपके द्वारा खोजे जा रहे परिणामों के समान परिणाम देगा। अपने टेबल-वैल्यू पैरामीटर की घोषणा करें, इसमें संग्रहीत प्रक्रिया को निष्पादित करके डेटा के साथ भरें, फिर अगली प्रक्रिया के लिए इनपुट चर के रूप में इसका उपयोग करें।
Declare @tblType tblType
insert into @tblType execute usp_OUTPUT1 'm'
execute usp_OUTPUT2 @tblType