ฉันมีวัตถุ SQL หลายอย่างที่ต้องดำเนินการทางเลือกอื่นตามสถานะที่ต้องการของคำขอ มีวิธีในการสร้างค่าคงที่ระดับฐานข้อมูล (การแจงนับ) ที่สามารถส่งผ่านไปยังกระบวนงานที่เก็บไว้ฟังก์ชันค่าตารางและใช้ในแบบสอบถาม (โดยไม่ต้องใช้ CLR) หรือไม่
CREATE PROCEDURE dbo.DoSomeWork(@param1 INTEGER, ..., @EnumValue myEnumType) AS ...;
แล้วใช้มัน:
EXEC doSomeWork 85, ..., (myEnumType.EnumValue1 + myEnumType.EnumValue2);
ไหนmyEnumType
จะเก็บค่าการแจงนับไม่กี่
ในขั้นตอนที่ฉันจะสามารถใช้@EnumValue
และทดสอบกับค่าในmyEnumType
การทำงานที่จำเป็น ฉันจะทำให้ค่าของmyEnumType
bitmask สำหรับกรณีที่ฉันกำลังพิจารณา
สำหรับตัวอย่างง่ายๆให้พิจารณากระบวนการที่มีราคาแพงซึ่งใช้ชุดข้อมูลขนาดใหญ่และลดลงเป็นชุดข้อมูลที่มีขนาดเล็กลง แต่ยังคงมีขนาดใหญ่มาก ในกระบวนการนี้คุณต้องทำการปรับเปลี่ยนบางอย่างในระหว่างกระบวนการที่จะมีผลต่อผลลัพธ์ สมมติว่านี่เป็นตัวกรองสำหรับ (หรือต่อ) บันทึกบางประเภทตามสถานะของการคำนวณระดับกลางภายในการลดลง @EnumValue
ชนิดmyEnumType
สามารถนำมาใช้ในการทดสอบสำหรับการนี้
SELECT ...
FROM ...
WHERE (@EnumValue & myEnumType.EnumValue1 = myEnumType.EnumValue1 AND ...)
OR (@EnumValue & myEnumType.EnumValue2 = myEnumType.EnumValue2 AND ...)
OR ...
เป็นค่าคงที่ระดับฐานข้อมูลเหล่านี้เป็นไปได้ใน SQL Server โดยไม่ต้องใช้ CLR หรือไม่
ฉันกำลังค้นหาการแจงนับระดับฐานข้อมูลหรือชุดของค่าคงที่ที่สามารถส่งผ่านเป็นพารามิเตอร์สำหรับกระบวนงานที่เก็บไว้ฟังก์ชันและอื่น ๆ