使用参数更新exec中的语句 - 列错误无效

时间:2014-02-25 13:52:37

标签: sql exec sqlparameters

我有一个包含5列的临时表。我从现有表中获得了四列,因此可以使用带有select语句的insert,这样可以正常工作。

然而,未填充的列我需要它是一个基本上是参数值的字符串。我试图在插入后运行一个简单的更新语句,我得到一个错误无效列。

部分代码如下。 此时,参数已经填充了相应的值。

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)

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:2)

我认为这只是一个简单的问题,@primaryDB参数不被单引号包围:

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

您可能会将SET语句生成为:

SET DBName = <param>

实际上你可能想要:

SET DBName = '<param>'