2009-11-06 32 views

回答

15
select * into #temp_table from current_table_in_stored_procedure 

#temp_table - locally temp 
##temp_table - globally temp 

select top 0 * into #temp_table from current_table_in_stored_procedure to have empty table 
+0

这将从current_table将数据复制到一个#temp_table,但#temp_table不会有相同的密钥,身份设置等尽管如此,这是执行这一任务的可接受的方式。 – 2009-11-06 19:08:02

+0

@大卫:临时表*将*继承身份设置,但不是,没有任何键或索引。我希望我能把它关掉! – 2009-11-06 19:16:52

7

SELECT * INTO #t FROM table

,如果你希望它是空的:

SELECT * INTO #t FROM table WHERE 1 = 2

1

另外,您可以脚本现有表并更改名称为临时表名并添加创建表跺脚到您想要运行的脚本的其余部分的顶部。我通常会这样做,如果它真的很重要,临时表完全匹配实际表的结构(例如,当我创建一个名为#inserted的假表,用于测试我打算放入触发器的代码时使用)。

大部分时间虽然select into会让你得到你所需要的。

0

公用表表达式或表变量也服务器从临时表分开的目的

相关问题