插入执行动态查询到一个表的结果(Insert result of executing dynamic

2019-08-04 10:59发布

我有一个动态查询@strQuery其上执行给出了很多列的结果。 我想从这个充满活力的查询结果插入到一个临时表。 因为我想执行的临时表中的一些过滤并获得所需结果我这样做。

类似的问题被问以前的线程上的位置 ,其中一个临时表创建,然后再使用数据插入INSERT INTO

我想避免这一步骤由于列长长的清单,也字段的数据类型是不知道我。

select * into #tmh from
exec(@strQuery)

错误信息

关键字“EXEC”附近的语法不正确。

这该怎么做 ? 是否有可能以这种方式来实现? 如果不是,请注明其他一些替代方案来获得存储在执行动态查询到一个表的结果。 谢谢。

Answer 1:

我也遇到这种情况之前,这里是我所做的:

DECLARE @strQuery nVarchar(100)

SET @strQuery='SELECT * into [tempdb].[dbo].[temptable] FROM YourTable'

EXECUTE sp_executesql @strQuery

SELECT * FROM [tempdb].[dbo].[temptable]

DROP TABLE [tempdb].[dbo].[temptable]

它工作正常。 不要问我为什么FQ表的名称,而不是#temptable。 我不知道。 这是行不通的。 我能得到它的工作的唯一方法是使用[tempdb中] [DBO]。[不是Temptable]



Answer 2:

这样进行

select t1.name,t1.lastname from(select * from table)t1.

其中,“选择表*”是你dyanmic查询。 这将返回结果,你可以作为例子给出临时表T1使用。



Answer 3:

您可以在当前执行上下文,通过动态SQL使用OUTPUT选项设置使用变量。 下面的示例代码。

DECLARE @Amount AS MONEY
DECLARE   @SQL AS NVARCHAR(1000)
SET @Amount = NULL 
SET @SQL = ('SELECT @amt=100' )
EXECUTE   sp_executeSQL @SQL, N'@amt MONEY OUTPUT', @amt=@Amount OUTPUT
SELECT  @Amount


Answer 4:

是的,你可以用含有这样的插入原始查询的新动态查询:

declare @strNewQuery varchar(max)
set @strNewQuery ='select * into #tmh from ('+@strQuery+') as t'
exec(@strNewQuery)


Answer 5:

我用这个解决 - 带出动态查询

此使用表变量来接收数据的过程

即使联接可以应用到它

select * into #itemPhantom from @tbl_items_upload

select * from #itemPhantom

select #itemPhantom.itemreference from #itemPhantom  left join phantom on phantom.name=#itemPhantom.PhantomName


文章来源: Insert result of executing dynamic query into a table