在添加额外的列时,将执行(@querystring)的结果插入表中



我正在编写一个存储过程,该过程动态创建SQL String,@sqlquery。创建此查询后,我需要执行查询并将其插入数据库中的表中,同时添加另一列为此特定插入指定唯一ID。(上下文:在此应用程序中,可能将多个数据分组插入该表,我需要能够在以后的分组之间进行区分。)

此问题类似于此问题,除了我使用的是Microsoft SQL Server 2008而不是MySQL。我在那里尝试了解决方案:

INSERT INTO data_table_name
EXECUTE(@SQLQuery), @SomeID

但是MS SQL Server 2008不喜欢该语法。

在SQL Server 2008中如何执行此操作的任何想法?

您可以将查询结果存储在表变量中,然后用额外的列从中读取并写入最终表

DECLARE @temp table (col1 int, col2 varchar(10), ....)
INSERT INTO @temp
EXEC(@SQLQuery)
INSERT INTO data_table_name
SELECT *, @SomeID FROM @temp 

您还可以在动态SQL字符串中附加@SomeID。

示例:

SET @SQLQuery = 'SELECT *,' + @SomeID + ' FROM ' + @tableNameVar 

然后执行此操作

INSERT INTO data_table_name
EXECUTE(@SQLQuery)

,由于您提到的是在存储过程中这样做,所以我建议您:

  1. 首先执行@sqlquery;
  2. 成功执行@sqlquery后,将@sqlquery插入具有唯一ID的表格。

即。

EXEC sp_executesql @SQLQuery, @Param 
IF @@ERROR <> 0
  BEGIN
    INSERT INTO TableA(Query)
    VALUES(@SQLQuery)
  END

您最好设计tablea,以使ID是一个身份,以便在将记录插入该表时会生成唯一的顺序ID。

最新更新