2017-03-22 4 views
0

これは簡単だと確信していますが、selectステートメントが変数として格納されています。 @statementには「select count(*)from table1」という文が含まれています。この変数を実行する必要があります。 sp_executesql @statementしかし、一時テーブルに結果を入れて、これは簡単に可能ですか?変数内のselectステートメントtempテーブルに置く必要があります

おかげ

答えて

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

申し訳ありませんが、私はすべての質問を与えられていませんでしたが、私はそれが1フィールドを返した投稿ステートメントでは、しかし、今、カウントすなわち1フィールドは単なる例であったと私はSqlZimの応答がうまくいかないような複数のフィールド私はいつもカラムの数/名前を知っているとは思いません。私は何をすることを選んだことだっ以下: -

Declare @TempSQLStatement nvarchar(max) 

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

SELECT * from ##temp 

方法がわからないの賞アレックスのソリューションとして、答えは罰金働くだろうと私は私が最初の場所での完全な情報を掲載していた場合SqlZimは似たような投稿をすると考えています管理者は支援することができますか?

関連する問題