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

Sql 创建随机名称(编号)临时表,sql,sql-server,dynamic-sql,Sql,Sql Server,Dynamic Sql,我一直在尝试使用动态SQL来实现这一点,这是可能的,但不是最顺利的方式 所以我想知道是否有办法创建一个随机名称的临时表show101、show24、show576 我试图实现的是创建一个临时表,其中包含来自不同表的特定数据。然后我只需操作temp表中的数据并给出一个输出 我使用的是SQL Server 2008。您的示例使用的是全局临时表。在删除它们之前,它们一直保持不变,并且可以在不同的连接之间共享。这就是为什么它们是全球性的。在您的情况下,它们可以在动态语句和外部语句的执行之间共享 我建议代

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

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

我试图实现的是创建一个临时表,其中包含来自不同表的特定数据。然后我只需操作temp表中的数据并给出一个输出

我使用的是SQL Server 2008。

您的示例使用的是全局临时表。在删除它们之前,它们一直保持不变,并且可以在不同的连接之间共享。这就是为什么它们是全球性的。在您的情况下,它们可以在动态语句和外部语句的执行之间共享

我建议代码更像这样:

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);

这将把数据从动态作用域移动到外部作用域,您可以将其用于其他目的。您现在可以在MyAttendable中访问它。

如果有一个具有唯一ID列的表来包含您的随机数,不是更容易吗?然后,您可以从具有适当ID的表中选择记录。临时表的作用域为单个动态SQL execute语句。为什么需要对其进行版本设置?@LittleBobbyTables-不能,因为输入到表中的数据根据客户端选择的内容而变化,因此列differ@GordonLinoff-很抱歉,我的SQL知识不足以真正理解这个问题。我知道临时表在会话结束之前只是临时表。但正如我所说,我不理解你已经提出并接受答案的问题。这个问题到底有什么不同?好吧,这看起来很简单,可以不使用任何问题,但是我如何在MyDentiable的末尾生成一个随机数,或者根本不需要它?如果两个或多个客户机正在运行查询,该怎么办?他们只能使用他们创建的MyTritable,对吗?@JohnZ。根本不需要随机数。您可以只使用本地临时表。