3 가지 잠재적 값을 제공하는 하나의 SQL 매개 변수
-
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)를 반환한다면 다른 이야기 일 수 있습니다 ...
제휴하지 않습니다 StackOverflow