2011-03-02 2 views

답변

4

당신이 그것을 할 수있는 방법은 두 가지가 있습니다

  1. 여러 쿼리 (각 테이블 하나를) 작성 후, 다음 매개 변수 값
  2. 를 사용하여 동적 SQL

에 따라 사이를 전환 1의 경우 다음과 같이하면됩니다.

if @param = 'value' 
    select Col1, Col2 from Table1 
else 
    select Col1, Col2 from Table2 

2의 경우 다음과 같이합니다.

declare @sql nvarchar(4000) 

select @sql = 'select Col1, Col2 from' + (case when @param = 'value' then 'Table1' else 'Table2' end) 

sp_executesql @sql 

경고 : 옵션 1가 가능한 경우 옵션 2를 매우 조심, 그것은 동적으로 항상 위험한 일이다 사용자가 제공 한 값에 따라 SQL을 구성, 안전한 옵션입니다. 이 특정 예제에서는 SQL에서 직접 매개 변수를 사용하지 않지만 그렇게 작성한 것은 매우 쉽기 때문에이를 악용하는 방법을 찾기가 매우 쉽습니다.

관련 문제