один параметр 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, вы, вероятно, могли бы использовать побитовое и.
Вот один из примеров:
IF ( @p1 & 1 = 1)
IF ( @p1 & 4 = 4)
Другие советы
Вместо того чтобы использовать встроенный T-SQL, часто лучше создавать отдельные хранимые процедуры и вызывать их.
Это связано с тем, что для каждого пакета существует только один кэшированный план запроса.
Также, примите во внимание комментарий Ремуса:вы нарушаете Правило Единой ответственности.Это делает обслуживание подверженным ошибкам.
Это может быть совсем другая история, если вы всегда возвращаете одни и те же множественные наборы результатов (MARS)...