সারণী মূল্যবান ফাংশনে পরিবর্তনশীল ঘোষণা করুন Dec


110

আমি কীভাবে কোনও টেবিলের মূল্যবান ফাংশনে ভেরিয়েবল ঘোষণা করতে পারি? (আমার শিরোনামে পছন্দ করুন)


ইনলাইন বা মাল্টি স্টেটমেন্ট? এমএসডিএন তাদের মতো বর্ণনা করে?
gbn

উত্তর:


205

টেবিলের মূল্যবান ফাংশনগুলির দুটি স্বাদ রয়েছে। একটি যা কেবলমাত্র একটি নির্বাচনী বিবৃতি এবং একটিতে কেবল একটি নির্বাচনী বিবৃতি ছাড়াও আরও বেশি সারি থাকতে পারে।

এটিতে কোনও চলক থাকতে পারে না:

create function Func() returns table
as
return
select 10 as ColName

পরিবর্তে আপনাকে এটি করতে হবে:

create function Func()
returns @T table(ColName int)
as
begin
  declare @Var int
  set @Var = 10
  insert into @T(ColName) values (@Var)
  return
end

33
প্রথম উদাহরণ একটি "ইনলাইন টেবিল-মূল্যবান ফাংশন" যা মাল্টি বিবৃতি টেবিল-মূল্যবান ফাংশন, যথা ডাটাবেজ সার্ভারের করতে তুলনায় কর্মক্ষমতা বেনিফিট আছে হিসাবে পরিচিত হয় পারস্পরিকতা ক্যোয়ারী দিয়ে ITVF inlined পিতা বা মাতা ক্যোয়ারী মধ্যে, মূলত একটি parameterised হয়ে VIEWযদিও একটি এমএসটিভিএফ একটি অস্বচ্ছ স্টোরেজ-প্রক্রিয়াটির মতো আচরণ করে (যদিও স্প্রোকের তুলনায় নিজস্ব সুবিধার সাথে)। এমএসটিভিএফের চেয়ে ইনলাইন ফাংশনগুলি পছন্দ করা উচিত। আপনার যদি অন্তর্বর্তী মানগুলি গণনা করতে এবং সঞ্চয় করতে হয় (যেমন একটি জটিল স্কেলারের ক্রিয়াকলাপের এক্সপ্রেশনের ফলস্বরূপ) তবে সাব-কোয়েরি ব্যবহার করুন।
দাই

1
এটি সম্ভবত উল্লেখ করার মতো যে আপনি যে পরিবর্তনশীলটি সেট করতে চান তা পপুলিট করতে যা ব্যবহার করছেন তার ফলাফল যদি কোনও উপায়ে সাধারণীকরণযোগ্য হয় তবে আপনি এটি তৈরির জন্য পৃথক ফাংশন লেখার বিষয়ে বিবেচনা করতে পারেন। এটি আপনাকে আপনার কার্যক্রমে একটি গতিশীল উত্পন্ন মান সন্নিবেশ করার সময় উপরের ডাই দ্বারা বর্ণিত আইটিভিএফ এর সমস্ত সুবিধা সহ ব্যবহার করার অনুমতি দেবে। আমি কেবল উপরের সমাধানটির সাহায্যে একটি ফাংশন লিখেছি (আপনাকে ধন্যবাদ @ মাইকাএলিক্রসন!) যা এমএসটিভিএফ ফর্মটি ব্যবহার করার জন্য আমাকে বাঁচাতে একটি সহায়ক ফাংশনে এর একটি পরামিতি দিয়ে যায়।
naughtilus

1
সবচেয়ে বড়
ব্যয়টি

@ নগ্নিলাস এটির উদাহরণ দেখলে দুর্দান্ত হবে। আপনি কি আপনার পরামর্শের সাথে আরও একটি উত্তর দেওয়ার কথা বিবেচনা করেছেন?
জ্যাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.