如何两次插入到临时表中

Pat*_*ick 3 sql sql-server-2008

我已经选择了类似以下的SQL:

IF EXISTS(SELECT name FROM tempdb..sysobjects WHERE name Like N'#tmp%'
 and id=object_id('tempdb..#tmp'))
DROP TABLE #tmp

into #tmp
select * from permTable
Run Code Online (Sandbox Code Playgroud)

我需要在继续处理之前向#tmp添加更多数据:

insert into #tmp
select * from permTable2
Run Code Online (Sandbox Code Playgroud)

但这会产生错误,因为SQL假设#tmp列的大小和类型(例如,如果permTable有一个列为int的列,但permTable2的列具有相同的名称但在一个记录中有一个NULL,则"无法将值插入列中" IsPremium',表'tempdb.dbo.#tmp").

如何让#tmp拥有我想要的类型?这真是不好的做法吗?

Chr*_*oph 5

您是否考虑过创建表格变量?您可以声明这样的列

declare @sometable table(
     SomeField [nvarchar](15),
     SomeOtherField [decimal](15,2));
Run Code Online (Sandbox Code Playgroud)