এটি একটি পুরানো পোস্ট, তবে যখন আমি "সঞ্চিত পদ্ধতির আউটপুট প্যারামিটার হিসাবে সারণী-মূল্যবান পরামিতি" অনুসন্ধান করছিলাম তখন এটি শীর্ষে ছিল। যদিও এটি আমার বোঝার মতো যে আপনি কোনও আউটপুট প্যারামিটার হিসাবে কোনও সারণি-মূল্যবান প্যারামিটারটি পাস করতে পারবেন না, আমি কল্পনা করব লক্ষ্যটি অন্য পদ্ধতিতে সারণি-মূল্যবান ইনপুট প্যারামিটার হিসাবে সেই টেবিল-মূল্যবান আউটপুট প্যারামিটারটি ব্যবহার করা। আমি কীভাবে এই কাজটি করেছি তার একটি উদাহরণ দেখাব।
প্রথমে এর সাথে কাজ করার জন্য কিছু ডেটা তৈরি করুন:
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' )
;
এরপরে, কিছু ডেটা ক্যাপচারের জন্য একটি সঞ্চিত পদ্ধতি তৈরি করুন। সাধারণত, আপনি এখানে সারণি-মূল্যবান আউটপুট প্যারামিটার তৈরি করার চেষ্টা করছেন this
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