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 中创建的临时表超出了外部查询的范围。

这是做你想做的一种方法:

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 回答