将sp_executesql的结果插入临时表

将sp_executesql的结果插入临时表,sql,sql-server,Sql,Sql Server,我在SQL中使用了一个动态查询,它返回一个大数据集,我需要将它插入到一个临时表中 做 从EXEC sp_executesql@query work选择进入tmp 我确实试过了,但在关键字“EXEC”附近出现了一个错误“语法不正确” 我知道它使用Insert into工作,但我不想手动创建表,因为它是一个包含很多列的大型表。是否有一种不必手动创建临时表的替代方法?不,它不起作用b您不能这样做。然而,解决方法是,在动态SQL像普通一样创建临时表之前,在动态SQL中插入该表。然后,当你完成后,你将有人

我在SQL中使用了一个动态查询,它返回一个大数据集,我需要将它插入到一个临时表中

做 从EXEC sp_executesql@query work选择进入tmp

我确实试过了,但在关键字“EXEC”附近出现了一个错误“语法不正确”


我知道它使用Insert into工作,但我不想手动创建表,因为它是一个包含很多列的大型表。是否有一种不必手动创建临时表的替代方法?

不,它不起作用b您不能这样做。然而,解决方法是,在动态SQL像普通一样创建临时表之前,在动态SQL中插入该表。然后,当你完成后,你将有人填写表格

可能是@Siyual的副本我注意到了,但它看起来太复杂了,无法简单地插入到表中。您能将select into语句插入到您的存储过程中吗?@Marcin我不清楚您的意思。但SELECT*INTO tmp FROM TABLE确实在一个过程中起作用,这意味着可以在动态查询的前面插入SELECT INTO。你只能执行动态qyery,其中包括select到语句是的,我意识到了。除了创建一个包含100列的临时表之外,你想不出任何其他选项。我想你可以尝试对硬编码进行一次选择来创建临时表,但不确定代码,或者这是否可行。但如果是这样的话,请选择一行,然后截断它并使用动态
IF OBJECT_ID('tempdb..##TmepTable') IS NOT NULL DROP TABLE ##TmepTable
CREATE TABLE ##TmepTable (TmpCol CHAR(1))
DECLARE @SQL NVARCHAR(max) =' IF OBJECT_ID(''tempdb..##TmepTable'') IS NOT NULL DROP TABLE ##TmepTable 
                        SELECT * INTO ##TmepTable  from [MyTableName]'
EXEC sp_executesql @SQL

SELECT Alias.* FROM  ##TmepTable as Alias
IF OBJECT_ID('tempdb..##TmepTable') IS NOT NULL DROP TABLE ##TmepTable