SQL server 2005 判断表是否存在
CREATE TABLE #d1(item INT)
建立后可以在系统数据库中的tempdb看到这张临时表
IF(SELECT OBJECT_ID('#d1')) IS NULL
PRINT '#d1 not exists.'
ELSE
PRINT '#d1 exists'
输出 #d1 not exists.
错误原因:
当前数据库不是tempdb,而是其他的数据库,所以不存在
解决方案:
IF(SELECT OBJECT_ID('tempdb.dbo.#d1')) IS NULL
PRINT '#d1 not exists.'
ELSE
PRINT '#d1 exists'
很easy吧;
select * from sysobjects ;
可以看到很多内容,包括你建立的表;
所以你还可以从sysobjects中name列判断是否有你想要的表;
select * from yourdb.dbo.sysobjects where name='tablename'
当然我们需要的是判断语句,next
IF EXISTS(SELECT * FROM sysobjects WHERE name='#d1')
PRINT 'table exists'
ELSE
PRINT 'not exists'
这里在sysobjects并没有加上数据库限定(即 yourdb.dbo.sysobjects),因而输出结果还是 not exists,这是由于当前数据库不是tempdb;
if exists (select * from tempdb.dbo.sysobjects where id = object_id('tempdb.dbo.#d1'))
到此基本结束;
条件判断之后,你就可以动态建立表了, 加上一些drop table 和 create table 就可以啦