我有以下T-SQL代码包:
begin tran
select top 100 *
into #t
from tableA
rollback tran
begin tran
if OBJECT_ID('tempdb..#t')is not null
drop table #t
select top 100 *
into #t
from tableA
rollback tran
当我尝试执行此代码时,我收到以下错误:
数据库中已有一个名为“#t”的对象。
似乎在第二个事务开始时检查找不到与表varieble #t 绑定的objectId。
我期待的是#t将被删除然后重新创建。为什么不丢弃相同的变量然后我在第二个事务中找回错误?
谢谢
答案 0 :(得分:0)
首先,临时表和表变量之间存在差异!如果只处理很少的数据,请尝试声明一个表变量并用数据填充它。 此外,尝试把
if OBJECT_ID('tempdb..#t')is not null
drop table #t
在第一个SELECT INTO之前 - 这可能会解决问题......