删除临时表问题

时间:2017-05-11 06:25:17

标签: sql-server tsql

drop temp table时遇到问题。如果在1次以下运行查询显示错误

  

已经有一个名为'#a'在数据库中。

请一次运行查询

if(OBJECT_ID('tempdb..#a','U')Is not null)
Begin
drop table #a
End

Create table #a
(
id int
)

insert into #a
select 1

select * from #a


if(OBJECT_ID('tempdb..#a','U')Is not null)
Begin
drop table #A
End

Create table #a
(
id int
,name varchar(10)
)

insert into #a
select 2,'name'

select * from #A

2 个答案:

答案 0 :(得分:1)

尝试:您必须使用GO制作批处理并单独执行每个批处理,因为您要再次创建相同的临时表并立即执行它:< / p>

if(OBJECT_ID('tempdb..#a','U')Is not null)
Begin
    drop table #a
End
GO
Create table #a (id int)

insert into #a
select 1

select * from #a

if(OBJECT_ID('tempdb..#a','U')Is not null)
Begin
    drop table #a
End
GO
Create table #a(id int,name varchar(10))
insert into #a
select 2,'name'

select * from #a

注意:请尝试对表名

使用类似的CASE

答案 1 :(得分:0)

你错过'GO'声明。

中间没有'GO',整个事物将被视为一个单独的脚本,当select语句查找列时,它将无法找到。

使用“GO”,它会将脚本的一部分视为“GO”作为一个批处理,并在“GO”之后进入查询之前执行。

if(OBJECT_ID('tempdb..#a','U')Is not null)
Begin
drop table #a
End
go
Create table #a
(
 id int
 )

insert into #a
select 1

select * from #a


if(OBJECT_ID('tempdb..#a','U')Is not null)
Begin
drop table #a
End

go

Create table #a
(
 id int
 ,name varchar(10)
)

insert into #a
select 2,'name'

select * from #a

如果它有用,请将其标记为答案。