2012-09-04 8 views
1

코드가 2000 개가 넘는 저장 프로 시저가 있습니다. 조건에 따라 from clause에서 테이블 이름을 변경해야합니다. 두 테이블 모두에서 열 이름이 동일하게 유지됩니다. 예를 들어조건에 따라 절에서 변경

: -

@condition는 'B'다음 내가 으로 SQL을 변경해야하는 경우 지금
Declare @condition char(1) 
    set @condition=(Select close_flg from log 
        where last_run_dt >= 
        (Select cur_dt from dt) 
       ) 

    --If @condition is 'A' then below sql will execute 

    Select a.columnA, 
     Case 
     when @condition='A' then 'D' 
     Else 'M' 
     END, 
     b.ColumnC 
    from TableA as a 
    inner join TableB as b 
    on a.Column=b.Column 

(만 내부 조인 다른 나머지는 선택 쿼리의 모든 열이 동일하다)

Select 
    -- the same columns as above 
    from TableC as c 
    inner join TableD as d 
    on c.Column=d.Column 

중복 코드를 줄이기 위해 SQL을 일반으로 만들고 싶습니다. 그렇게 할 수도 있습니다.

감사

답변

2

이 같은 시나리오에 대한 동적 쿼리를 사용할 수 있습니다

DECLARE @sqlCommand varchar(1000) 
DECLARE @TableName varchar(75) 

--If @condition is 'A' then 
Set @TableName = 'your table name' 
--else 
Set @TableName = 'your other table name' 


SET @sqlCommand = 'select * from '[email protected] 
EXEC (@sqlCommand) 

지금 당신의 시나리오에 따라 기술 위에 변환.

+0

몇 가지 선택 쿼리가 있기 때문에 나는 모든 @sqlCommand를 연결 한 다음 Exec (@sqlCommand)를 사용할 수 있습니까? – praveen

+0

예, 코스를 벗어났습니다. detail.http : //www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/ – SMK

+0

에 대한 링크를보십시오. 많은 도움을주었습니다. – praveen

관련 문제