我相信這很容易,但我有一個select語句存儲爲變量,例如, @statement包含一條語句「table1中的select count(*)」我需要執行這個變量例如sp_executesql @statement但將結果放到臨時表中,這可能很容易嗎?select變量中的語句我需要輸出到臨時表
感謝
我相信這很容易,但我有一個select語句存儲爲變量,例如, @statement包含一條語句「table1中的select count(*)」我需要執行這個變量例如sp_executesql @statement但將結果放到臨時表中,這可能很容易嗎?select變量中的語句我需要輸出到臨時表
感謝
您可以先創建臨時表,然後使用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
方式一:
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
對不起,我沒有給出所有的問題,在我發佈的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會張貼類似的東西,如果我貼完整的信息擺在首位,可以管理員協助?