如何在不写两次的情况下创建两个具有相同结构的临时表?

时间:2009-09-28 20:28:22

标签: sql sql-server sql-server-2005 tsql

如何在不写两次的情况下创建两个具有相同结构的临时表?

类似的东西:

DECLARE @TEST_TABLE1, @TEST_TABLE2 TABLE
(
    FIELD1 INT,
    FIELD2 INT
)

和NO:

DECLARE @TEST_TABLE1 TABLE
(
    FIELD1 INT,
    FIELD2 INT
)

DECLARE @TEST_TABLE2 TABLE
(
    FIELD1 INT,
    FIELD2 INT
)

3 个答案:

答案 0 :(得分:6)

这些不是“临时表”,临时表是CREATE TABLE #TempTable(x int)

要使其适用于真正的表格表,请尝试:

CREATE TABLE #TempTable(x int)
insert into #TempTable values(5) --test data to show no data copied to new table
select * into #tempTable2 from #TempTable where 1=2
select * from #TempTable
select * from #TempTable2

这些是表格变量(@tableVariable),你必须声明每个变量,没有办法解决它。

答案 1 :(得分:0)

我能想到的唯一非常非标准的方法是直接写入sys.tables,但你仍然需要做两次插入,但是你同时在做表。

这可能不是你想要的,但是没有使用存储过程,并且从你的应用程序进行一次调用,而在数据库中有两个我无法想到任何其他解决方案。

答案 2 :(得分:0)

创建第一个临时表,然后选择第二个临时表:

- 创建第一个临时表

CREATE TABLE#TEST_TABLE1 (     FIELD1 int     ,FIELD2 int )

- 选择第二个临时表

SELECT * INTO#TEST_TABLE2 从#TEST_TABLE1

- 保存两个临时表

SELECT * FROM#TEST_TABLE1

SELECT * FROM#TEST_TABLE2