我一直在使用动态 SQL 来尝试实现这一点,这有点可能,但不是最顺利的方式。
所以我想知道是否有办法创建一个随机名称临时表(##show101、##show24、##show576)。
我想要实现的是创建一个临时表,其中包含来自不同表的某些数据。然后我只是操作临时表中的数据并给出输出。
我正在使用 SQL Server 2008。
我一直在使用动态 SQL 来尝试实现这一点,这有点可能,但不是最顺利的方式。
所以我想知道是否有办法创建一个随机名称临时表(##show101、##show24、##show576)。
我想要实现的是创建一个临时表,其中包含来自不同表的某些数据。然后我只是操作临时表中的数据并给出输出。
我正在使用 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);
这会将数据从动态范围“移动”到外部范围,您可以将其用于其他目的。您现在可以在#MyTempTable 中访问它。