2

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) を使用しており、次のように作成されたテーブルに対してSELECTステートメントを作成しようとしています。

DECLARE @Sql AS VARCHAR(1500)

SET @Sql = 'SELECT 1 AS id, ''123'' AS value INTO #tmp_prueba'

EXECUTE ( @Sql )

SELECT * FROM #tmp_prueba

しかし、テーブルが存在しないことに気付きました

テーブルからデータを取得するにはどうすればよいですか?

4

2 に答える 2

5

@sql で作成した一時テーブルは、外部クエリの範囲外です。

これがあなたが望むことをする1つの方法です:

DECLARE @Sql AS VARCHAR(1500);

SET @Sql = 'SELECT 1 AS id, ''123'' AS value INTO #tmp_prueba;
            select * from #tmp_prueba'

create table #tmp_prueba (id int, value varchar(255));

insert into #tmp_prueba
    EXECUTE( @Sql );

SELECT * FROM #tmp_prueba

変更点は次のとおりです。まず、@sql クエリで一時テーブルからすべてを選択します。次に、結果を保持する一時テーブル (この場合は同じ名前) を作成します。これで、実行の結果をテーブルに挿入できます。出来上がり!データはそこにあります。

于 2012-09-11T19:55:13.923 に答える
1

一時テーブルは Tempdb に作成されるため、これを行うこともできます。

SET @Sql = 'SELECT 1 AS id, ''123'' AS value INTO ##tmp_prueba'

EXECUTE ( @Sql )

Select * from tempdb..##tmp_prueba
于 2014-07-23T19:03:52.420 に答える