我学习了以下类似的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
在继续处理之前,我需要向 #tmp 添加更多数据:
insert into #tmp
select * from permTable2
但是这会导致错误,因为SQL已经假定了#tmp列的大小和类型(例如,如果permTable中有一个int的列,但是permTable2中有相同名称的列,但是其中一条记录为NULL,则会出现“无法将值NULL插入到列'IsPremium',表'tempdb.dbo.#tmp'中”)。
我该如何让#tmp拥有我想要的类型?这真的是不好的实践吗?
UNION ALL
来一次性插入它们吗?这将创建一个具有正确列设置的临时表。 - JNK