2017-03-22 47 views
0

我相信這很容易,但我有一個select語句存儲爲變量,例如, @statement包含一條語句「table1中的select count(*)」我需要執行這個變量例如sp_executesql @statement但將結果放到臨時表中,這可能很容易嗎?select變量中的語句我需要輸出到臨時表

感謝

回答

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

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', @[email protected] OUTPUT; 

select @result; 

select @result as count into #temp 
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會張貼類似的東西,如果我貼完整的信息擺在首位,可以管理員協助?

相關問題