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拥有我想要的类型?这真是不好的做法吗?
您是否考虑过创建表格变量?您可以声明这样的列
declare @sometable table(
SomeField [nvarchar](15),
SomeOtherField [decimal](15,2));
Run Code Online (Sandbox Code Playgroud)