Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 在添加额外列时,将execute(@QueryString)的结果插入表中_Sql_Sql Server - Fatal编程技术网

Sql 在添加额外列时,将execute(@QueryString)的结果插入表中

Sql 在添加额外列时,将execute(@QueryString)的结果插入表中,sql,sql-server,Sql,Sql Server,我正在编写一个动态创建SQL字符串@SQLQuery的存储过程。创建此查询后,我需要执行查询并将其插入数据库中的表中,同时添加另一列,该列指定此特定插入的唯一ID。(上下文:在此应用程序中,可能会将多个数据分组插入此表中,我需要能够在以后区分分组。) 这个问题与此类似,只是我使用的是MicrosoftSQLServer2008而不是mysql。我在那里尝试过解决方案: INSERT INTO data_table_name EXECUTE(@SQLQuery), @SomeID 但是MSSQL

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

这个问题与此类似,只是我使用的是MicrosoftSQLServer2008而不是mysql。我在那里尝试过解决方案:

INSERT INTO data_table_name
EXECUTE(@SQLQuery), @SomeID
但是MSSQLServer2008不喜欢这种语法


关于如何在SQLServer2008中实现这一点,您有什么想法吗

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

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)

既然您提到要在存储过程中执行此操作,我建议您:

  • 首先执行@SQLQuery
  • 成功执行@SQLQuery后,将@SQLQuery插入到具有唯一ID的表中
  • i、 e

    EXEC sp_executesql@SQLQuery,@Param
    如果@错误0
    开始
    插入表格A(查询)
    值(@SQLQuery)
    结束
    

    您最好设计TableA,使ID成为一个标识,以便在将记录插入该表时生成一个唯一的顺序ID。

    我得到答案的速度甚至快于我被允许接受答案的速度。令人惊叹的。这很好用。谢谢他希望为查询返回的值设置一个id值。
    EXEC sp_executesql @SQLQuery, @Param 
    
    IF @@ERROR <> 0
      BEGIN
        INSERT INTO TableA(Query)
        VALUES(@SQLQuery)
      END