один параметр sql, который дает мне 3 потенциальных значения

StackOverflow https://stackoverflow.com/questions/1691867

  •  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)...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top