0

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

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

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

我正在使用 SQL Server 2008。

4

1 回答 1

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 中访问它。

于 2013-02-11T16:51:51.117 回答