আমার কাছে বেশ কয়েকটি এসকিউএল অবজেক্ট রয়েছে যা অনুরোধের পছন্দসই অবস্থার ভিত্তিতে বিকল্প পদক্ষেপ গ্রহণ করা দরকার। সঞ্চিত পদ্ধতি, টেবিল-মূল্যবান ফাংশনগুলিতে এবং প্রশ্নগুলিতে (সিএলআর ব্যবহার না করে) ব্যবহার করা যায় এমন ডাটাবেস স্তরের স্থির (গণনা) তৈরির কোনও উপায় আছে কি?
CREATE PROCEDURE dbo.DoSomeWork(@param1 INTEGER, ..., @EnumValue myEnumType) AS ...;
এবং তারপরে এটি ব্যবহার করুন:
EXEC doSomeWork 85, ..., (myEnumType.EnumValue1 + myEnumType.EnumValue2);
যেখানে myEnumType
কয়েকটি গণনার মান থাকবে।
পদ্ধতিতে আমি এটি প্রয়োজনীয় কাজের জন্য @EnumValue
মানগুলির সাথে এটি ব্যবহার করতে এবং পরীক্ষা করতে সক্ষম হব myEnumType
। আমি myEnumType
যে ক্ষেত্রে বিবেচনা করছি তার জন্য আমি বিটমাস্কের মানগুলি তৈরি করব।
একটি সাধারণ উদাহরণের জন্য, একটি ব্যয়বহুল প্রক্রিয়া বিবেচনা করুন যা একটি বিশাল ডেটাসেট নেয় এবং এটি একটি ছোট তবে তবুও খুব বড় ডেটাসেটে হ্রাস করে। এই প্রক্রিয়াটিতে আপনাকে সেই প্রক্রিয়াটির মাঝামাঝি কিছু সামঞ্জস্য করা দরকার যা ফলাফলকে প্রভাবিত করবে। বলুন এটি হ্রাসের মধ্যবর্তী গণনার কিছু স্থিতির উপর নির্ভর করে কিছু ধরণের রেকর্ডের (বা বিপক্ষে) ফিল্টার filter @EnumValue
ধরনের myEnumType
এই জন্য পরীক্ষা ব্যবহার করা যেতে পারে
SELECT ...
FROM ...
WHERE (@EnumValue & myEnumType.EnumValue1 = myEnumType.EnumValue1 AND ...)
OR (@EnumValue & myEnumType.EnumValue2 = myEnumType.EnumValue2 AND ...)
OR ...
এসএকিউএল সার্ভারে এই জাতীয় ডাটাবেস স্তরের ধ্রুবকগুলি কি সিএলআর ব্যবহার ছাড়াই সম্ভব?
আমি একটি ডাটাবেস স্তরের গণনা বা ধ্রুবকগুলির সেট চাই যা সঞ্চিত প্রক্রিয়া, ফাংশন ইত্যাদির পরামিতি হিসাবে পাস করা যেতে পারে।