创建随机名称(编号)临时表

时间:2013-02-11 16:39:23

标签: sql sql-server dynamic-sql

我一直在玩动态SQL来尝试实现这一点,这有点可能,但不是最顺利的方法。

所以我想知道是否有办法创建随机名称临时表(## show101,## show24,## show576)。

我想要实现的是一个临时表,其中包含来自不同表的某些数据。然后我只是操纵临时表中的数据并给出输出。

我正在使用SQL Server 2008。

1 个答案:

答案 0 :(得分:1)

您的示例是使用全局临时表。这些内容在删除之前一直保留,并且可以在不同的连接之间共享。这就是他们“全球化”的原因。在您的情况下,它们可以在动态语句的执行和外部语句之间共享。

我建议看起来更像这样的代码:

create table #MyTempTable . . . <as whatever>

declare @sql nvarchar(max) = '
    select <whatver>
    into #temp1

    . . .

    do some more work on #temp1 if you like

    --Finally
    select * from temp1
   ';

insert into #MyTempTable
    exec(@sql);

这会将数据从动态范围“移动”到外部范围,您可以将其用于其他目的。您现在可以在#MyTempTable中访问它。