문제

저장된 절차에는 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