معلمة SQL واحدة لتعطيني 3 قيم محتملة
-
18-09-2019 - |
سؤال
في الإجراء المخزوني الخاص بي، أحتاج إلى معلمة واحدة تعطيني إمكانات 3 قيم.
لذلك يمكنني أن أفعل شيئا مثل:
@p1 <-- my parameter
IF (@p1 ???) -- include users
SELECT * FROM USERS
IF (@p1 ???) -- include employees
SELECT * FROM employees
IF (@p1 ???) -- iclude customers
SELECT * FROM CUSTOMERS
أعتقد أنني سأضطر إلى القيام بشدة ضجيجا بعض الشيء، ولكن غير متأكد من كيفية القيام بذلك في SQL.
تحديث
أنا في الواقع القيام نقابة من نوع.
المحلول
إذا كان @ p1 هو int، أو بعض البديل مثل bigint أو tinyint، فيمكنك استخدام bitwise و.
هنا مثال:
IF ( @p1 & 1 = 1)
IF ( @p1 & 4 = 4)
نصائح أخرى
بدلا من أن يكون لدى T-SQL Inline، فغالبا ما تكون أفضل حالا في إنشاء إجراءات منفصلة مخزنة واتصل بها.
هذا لأنه لا يوجد سوى خطة استعلام مخزنة مؤقتا واحدة لكل دفعة.
أيضا, ، استسلام تعليق ريموس: أنت تحطمت قاعدة المسؤولية الفردية. هذا يجعل خطأ الصيانة عرضة.
قد تكون قصة مختلفة إذا كنت تقوم دائما بإرجاع نفس مجموعات النتائج المتعددة (المريخ) ...
لا تنتمي إلى StackOverflow