2014-07-08 2 views
0

변수를 테이블 이름으로 사용할 수있는 프로 시저를 만들려고합니다.SQL 문에서 변수를 사용하는 방법 From Line

예 :

Select Temp1, Temp2 
From @var 

@var 올바른 테이블 이름이지만 while 루프를 통한 각각의 반복으로 변화를 갖는다.

-- Above sets up all Variables 
WHILE @Count >= @I 
BEGIN 
SET @ObjectID = (SELECT ObjectID FROM @TmpTable WHERE ID = @I) 
SET @TableName = (SELECT TableName FROM @TmpTable WHERE ID = @I) 
IF @I = 8 
BEGIN 

     SELECT * 
     INTO ##TMPTable 
     FROM @TableName 
     -- Additional Processing 
END 
END 
+0

당신이 할 수없는 동적 SQL (선택 문자열을 구축 한 후 해당 문자열을 실행)를 사용하지 않고 http://stackoverflow.com/questions/20678725/how-to-set-table- name-in-dynamic-sql-query 또는 http://stackoverflow.com/questions/1325044/dynamic-sql-passing-table-name-as-parameter 또는 http://stackoverflow.com/questions/10521144/how- 선택 - 쿼리 -와 - 변수 - 선택 - 모두 - 동적 SQL을 – xQbert

+0

난 이해가 안 돼요. 어떻게 변화하고 있습니까? 그것은 루프에서 사용되지 않습니다. 더 많은 코드? :-p – Relevant

+0

다른 방법을 찾을 수 있다면 동적 SQL을 피하는 것이 좋습니다. http://www.sommarskog.se/dynamic_sql.html – Relevant

답변

0
DECLARE 
    @SQLString varchar(max), 
    @TempTableName varchar(100) 

SET @TempTableName = '##TMPTable' + cast(@@spid AS varchar(5)) 

WHILE @Count >= @I 
BEGIN 
SET @ObjectID = (SELECT ObjectID FROM @TmpTable WHERE ID = @I) 
SET @TableName = (SELECT TableName FROM @TmpTable WHERE ID = @I) 
IF @I = 8 
BEGIN 

     set @SQLString = ' 
     SELECT * 
     INTO ' + @TempTableName + ' 
     FROM ' + @TableName 

     EXECUTE (@SQLString) 

     EXECUTE ('SELECT * from ' + @TempTableName) 

     -- Additional Processing 
END 
END 
+0

완벽하게 작동했습니다. 고맙습니다 – epelletier9740

관련 문제