SQL判断数据库表、临时表、存储过程、视图、索引是否存在

SQL判断数据库表、临时表、存储过程、视图是否存在

我们在写SQL的时候,经常在创建表啊,存储过程啊,视图啊的时候提示它们已经存在,所以不允许再创建,此时就是报错,导致SQL无法继续运行。因此,在创建的时候判断它们是否存在是一个良好的编程习惯。OK,废话说完了。

–注
–[DBNAME]用数据库名替换如 TESTDB
–[TBNAME]用表名替换如 TESTTB
–[PROCNAME]用存储过程名替换如 TESTPROC
–[VIEWNAME]用视图名替换如 TESTVIEW
–[IDXNAME]用索引名替换如 TESTIDX

**

判断数据库数据表是否存在

**

IF EXISTS(SELECT * FROM [DBNAME].dbo.sysobjects WHERE id=object_id(N'[DBNAME]..[TBNAME]'))
BEGIN
PRINT 'TABLE [TBNAME] EXISTED'
END
--或者
IF object_id(N'[DBNAME]..[TBNAME]') IS NOT NULL
BEGIN
PRINT 'TABLE [TBNAME] EXISTED'
END

判断数据库临时表是否存在

方法与数据表相同,只不过[DBNAME]是固定的 tempdb
##判断存储过程是否存在

IF EXISTS(SELECT * FROM sysobjects WHERE id = object_id(N'[PROCNAME]'))
BEGIN
PRINT 'TABLE [PROCNAME] EXISTED'
END

判断视图是否存在

IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME=N'[VIEWNAME]')
BEGIN
PRINT 'TABLE [VIEWNAME] EXISTED'
END

判断索引是否存在

IF EXISTS(SELECT * FROM sysindexs WHERE id=object_id('[TBNAME]') AND name='[IDXNAME]')
BEGIN
PRINT 'TABLE [IDXNAME] EXISTED'
END

猜你喜欢

转载自blog.csdn.net/qq_31729917/article/details/81838522