Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql exec中带参数的Update语句-无效列错误_Sql_Exec_Sqlparameter - Fatal编程技术网

Sql exec中带参数的Update语句-无效列错误

Sql exec中带参数的Update语句-无效列错误,sql,exec,sqlparameter,Sql,Exec,Sqlparameter,我有一个5列的临时表。我从现有的表中得到四列,所以使用insert with select语句,这很好 但是,没有填充的列我需要它是一个字符串,基本上是一个参数值。我试图在插入后运行一个简单的update语句,但得到了一个无效列错误 部分代码如下所示。 此时,参数已经填充了相应的值 exec ('CREATE TABLE ' + @temp_table_runID + '( [DBName] [nvarchar] (100), [RunID] [bigint] ,

我有一个5列的临时表。我从现有的表中得到四列,所以使用insert with select语句,这很好

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

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

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)

非常感谢您的帮助。谢谢。

我认为这只是一个简单的问题,您的
@primaryDB
参数没有用单引号括起来:

exec('update ' + @temp_table_runID + ' SET DBName = ''' + @primaryDB + '''')
您将生成
SET
语句,如下所示:

SET DBName = <param>
SET DBName=
实际上,您可能想要:

SET DBName = '<param>'
SET DBName=''

我只是想知道是否还有其他更新语句,而不是单独的更新语句。我可以在insert语句中插入DBName值。谢谢。我只是简单地选择了“++@primaryDB++”…诸如此类,如上图所示,它就像一个符咒。不需要单独的update语句。大家干杯。