如何在不写两次的情况下创建两个具有相同结构的临时表?
类似的东西:
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
)
答案 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