2014-02-25 2 views
0

5 개의 열이 포함 된 임시 테이블이 있습니다. 기존 테이블에서 4 개의 열을 얻었으므로 select 문과 함께 insert를 사용하면 잘 작동합니다.매개 변수가있는 exec의 업데이트 문 - 잘못된 열 오류

그러나 채워지지 않은 열은 기본적으로 매개 변수 값인 문자열이어야합니다. 삽입 후에 간단한 업데이트 문을 실행하려고하는데 잘못된 열 오류가 발생합니다.

일부 코드는 다음과 같습니다. 이 시점에서 매개 변수는 이미 각각의 값으로 채워져 있습니다.

exec ('CREATE TABLE ' + @temp_table_runID + '(
     [DBName] [nvarchar] (100), 
     [RunID] [bigint] , 
     [OrchID] [bigint] , 
     [OrchVersion] [bigint] , 
     [TimeStamp] [bigint] 
    ) ON [PRIMARY]') 

--exec('select * from ' + @temp_table_runID) 
-- Insert from the primary database 
exec(' INSERT INTO ' + @temp_table_runID + ' 
     (
     [RunID], 
     [OrchID] , 
     [OrchVersion] , 
     [TimeStamp] 
     ) 
SELECT R.RunID, R.OrchID, R.OrchVersion, R.TimeStamp 
FROM ' + @primaryDB + '.dbo.Run R, ' + @primaryDB + '.dbo.SeriesVariables S 
WHERE S.SeriesVariables_Value = ''SplitSystemTest2'' 
AND S.Series_ID = R.RunID order by R.Timestamp ASC') 

-- The below statement does not work and get an error invalid column name 'reportingdb_24feb14'. The value of the @primaryDB = reportingdb_24feb14. 

-- update the table with database name 
exec('update ' + @temp_table_runID + ' SET DBName = ' + @primaryDB) 

도움을 주시면 대단히 감사하겠습니다. 감사.

답변

2

나는이 단일 따옴표로 둘러싸여 아닌 @primaryDB 매개 변수를 사용하여 단순한 문제가 있다고 생각 :

exec('update ' + @temp_table_runID + ' SET DBName = ''' + @primaryDB + '''') 

당신은 같은 SET 문을 생성되었을 것입니다 :

SET DBName = <param> 

하는 경우에 사실 당신은 아마 원할 것입니다 :

SET DBName = '<param>' 
+1

그것은 좋은 대답입니다. 그것은 작동합니다. 고맙습니다. – Abe

+0

나는 별개의 update 문 대신에 어쨌든 거기에 있는지 궁금하다. insert 문에 DBName 값을 삽입 할 수 있습니다. 고맙습니다. – Abe

+0

나는 단순히 '' '+ @primaryDB +' ''를 선택했다. 위의 그림과 같이 어쩌면 어쩌면 매력처럼 작동한다. 별도의 업데이트 성명서가 필요 없습니다. 건배. – Abe