判断连接型临时表是否存在的问题

1.获取表的id
object_id(N'dbname.dbo.tablename')


2.判断属性
OBJECTPROPERTY(id, N'IsTable')


3. 合起来写
IF  EXISTS (select id
    from dbo.sysobjects WHERE id=object_id(N'dbo.tablename') 
        and OBJECTPROPERTY(id,n'IsTable')=1
)
...


问题:
对于#表怎么处理?
可以使用object_id获取id但却不存在于sysobjects中

刚刚看到了一个国外的帖子:
如果object_id(N'tempdb.dbo.#tablename')不为空,那表当然就存在了,不用再判断属性类型。(因为#型变量只有table这一种类型?)

另外还有一点补充:
如果连接表是在proc内部建立的,当proc执行完成后该表会自动删除


你可能感兴趣的:(sql)