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