我需要将变量中的select语句输出到临时表中

时间:2017-03-22 12:11:35

标签: sql-server tsql sql-server-2012

我确信这很容易,但我有一个select语句存储为变量,例如@statement包含一个语句“select table(*)from table1”我需要执行这个变量,例如sp_executesql @statement但是将结果放到临时表中,这可能很容易吗?

谢谢

3 个答案:

答案 0 :(得分:2)

您可以先创建临时表,然后使用insert into ... exec...

declare @statement nvarchar(max);
set @statement = 'select 1';

create table #temp (rc int);
insert into #temp (rc)
exec sp_executesql @statement;

select * from #temp;

rextester演示:http://rextester.com/WPDAZ22362

返回:1

答案 1 :(得分:0)

一种方式:

declare @statement nvarchar(max) = 'select count(*) from table1'

declare @sql nvarchar(max) = N'set @result = (' + @statement + ')'

declare @result int
exec sp_executesql @sql, N'@result int OUTPUT', @result=@result OUTPUT;

select @result;

select @result as count into #temp

答案 2 :(得分:0)

很抱歉,我没有得到所有的问题,在我发布的select语句中,它只返回了1个字段,但我现在被告知计数,即1个字段只是一个例子,我可能需要返回多个字段所以SqlZim响应不起作用我不认为因为我不会总是知道列的数量/名称。我选择做的是: -

Declare @TempSQLStatement nvarchar(max)

SET @TempSQLStatement=REPLACE(@statement,' FROM ',' INTO ##temp FROM ');
EXEC sp_executesql @TempSQLStatement; 

SELECT * from ##temp

不确定如何给出答案,因为Alex的解决方案可以正常工作,我相信如果我首先发布了完整的信息,SqlZim会发布类似的东西,可以管理员协助吗?