【全球速看料】SQL Server判断数据库、表、列、视图、存储过程、函数是否存在总结

时间:2023-05-06 06:04:16 来源: 脚本之家


(资料图片)

目录
一、前言概述二、数据库相关的判断2.1、判断数据库是否存在三、数据表相关的判断3.1、判断数据表是否存在3.2、判断临时表是否存在3.3、判断表是否存在某列3.4、判断列是否自增列3.5、判断表中是否存在索引四、视图相关的判断4.1、判断视图是否存在五、存储过程相关的判断5.1、判断存储过程是否存在六、函数相关的判断6.1、判断函数是否存在

一、前言概述

在写一些业务逻辑相对复杂点的存储过程的时候,经常会用到临时表或者数据表作为临时结果的保存。但每次在作表是否存在的判断时,往往想不起完整的SQL写法。因此,记录一些常用的数据库对象是否存在的判断方法,可以达到快速查找的目的。正是:好记性不如烂笔头。

二、数据库相关的判断

2.1、判断数据库是否存在

IF EXISTS (SELECT * FROM sys.databases WHERE NAME="TEST")
    PRINT "数据库TEST存在"
ELSE
    PRINT "数据库TEST不存在"

三、数据表相关的判断

3.1、判断数据表是否存在

--方法一
IF OBJECT_ID(N"[dbo].[PRODUCT]",N"U") IS NOT NULL
    PRINT "数据表PRODUCT存在"
ELSE
    PRINT "数据表PRODUCT不存在"
--方法二
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N"[dbo].[PRODUCT]") AND XTYPE="U")
    PRINT "数据表PRODUCT存在"
ELSE
    PRINT "数据表PRODUCT不存在"
--方法三
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N"[dbo].[PRODUCT]") AND OBJECTPROPERTY(ID,N"IsUserTable")=1)
    PRINT "数据表PRODUCT存在"
ELSE
    PRINT "数据表PRODUCT不存在"

3.2、判断临时表是否存在

--方法一
IF OBJECT_ID(N"tempdb..#PRODUCT",N"U") IS NOT NULL
    PRINT "临时表#PRODUCT存在"
ELSE
    PRINT "临时表#PRODUCT不存在"
--方法二
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE ID=OBJECT_ID(N"tempdb..#PRODUCT") AND XTYPE="U")
    PRINT "临时表#PRODUCT存在"
ELSE
    PRINT "临时表#PRODUCT不存在"

3.3、判断表是否存在某列

--方法一
IF COL_LENGTH(N"[dbo].[PRODUCT]","PRD_ID") IS NOT NULL
    PRINT "表PRODUCT存在列PRD_ID"
ELSE
    PRINT "表PRODUCT不存在列PRD_ID"
--方法二
IF EXISTS (SELECT * FROM syscolumns WHERE ID=OBJECT_ID(N"[dbo].[PRODUCT]") AND NAME="PRD_ID")
    PRINT "表PRODUCT存在列PRD_ID"
ELSE
    PRINT "表PRODUCT不存在列PRD_ID"
--方法三
IF EXISTS (SELECT * FROM sysobjects A INNER JOIN syscolumns B ON A.ID=B.ID WHERE A.XTYPE="U" AND A.NAME="PRODUCT" AND B.NAME="PRD_ID")
    PRINT "表PRODUCT存在列PRD_ID"
ELSE
    PRINT "表PRODUCT不存在列PRD_ID"

3.4、判断列是否自增列

IF COLUMNPROPERTY(OBJECT_ID(N"[dbo].[PRODUCT]"),"PRD_ID","ISIDENTITY")=1
    PRINT "表PRODUCT列PRD_ID是自增列"
ELSE
    PRINT "表PRODUCT列PRD_ID不是自增列"

3.5、判断表中是否存在索引

IF EXISTS(SELECT * FROM SYSINDEXES WHERE ID=OBJECT_ID(N"[dbo].[PRODUCT]") AND NAME="PK_PRODUCTS")
    PRINT "表PRODUCT存在索引PK_PRODUCTS"
ELSE
    PRINT "表PRODUCT不存在索引PK_PRODUCTS"

四、视图相关的判断

4.1、判断视图是否存在

--方法一
IF OBJECT_ID(N"[dbo].[BRC_1001]","V") IS NOT NULL
    PRINT "视图BRC_1001存在"
ELSE
    PRINT "视图BRC_1001不存在"
--方法二
IF EXISTS (SELECT * FROM sysobjects where id=OBJECT_ID(N"[dbo].[BRC_1001]") and OBJECTPROPERTY(ID,N"IsView")=1)
    PRINT "视图BRC_1001存在"
ELSE
    PRINT "视图BRC_1001不存在"
--方法三
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME=N"BRC_1001")
    PRINT "视图BRC_1001存在"
ELSE
    PRINT "视图BRC_1001不存在"

五、存储过程相关的判断

5.1、判断存储过程是否存在

--方法一
IF OBJECT_ID(N"[dbo].[BRC_BomCost]","P") IS NOT NULL
    PRINT "存储过程BRC_BomCost存在"
ELSE
    PRINT "存储过程BRC_BomCost不存在"
--方法二
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N"[dbo].[BRC_BomCost]") AND OBJECTPROPERTY(ID,N"IsProcedure")=1)
    PRINT "存储过程BRC_BomCost存在"
ELSE
    PRINT "存储过程BRC_BomCost不存在"

六、函数相关的判断

6.1、判断函数是否存在

IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N"[dbo].[BRC_MLTotal]") AND XTYPE IN (N"FN",N"IF",N"TF"))
    PRINT "函数BRC_MLTotal存在"
ELSE
    PRINT "函数BRC_MLTotal不存在"

到此这篇关于SQL Server判断数据库、表、列、视图、存储过程、函数是否存在的文章就介绍到这了,更多相关sqlserver判断视图函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

标签:

相关文章

四川11人被骗偷渡出境“挣大钱” 主犯被判刑2年

成都4月23日电 (吴平华 黄静)近日,四川资阳市公安局临空经济区分局破获了一起11人偷越国边境案,目前...

来源:2022-04-24

全民战疫要坚持的12个健康生活细节

全民战疫,细节制胜!4月21日,上海市健康促进委员会办公室、上海市健康促进中心向全体市民发布倡议书,...

来源:2022-04-24

中国青少年儿童身心健康教育管理委员会正式成立

北京4月23日电 (记者 高凯)23日,中国青少年儿童身心健康教育管理委员会在北京会议中心正式成立。 当日...

来源:2022-04-24

吉林省遭遇“沙尘周” 局地瞬时风力超10级

长春4月23日电 (记者 郭佳)23日,狂风卷着沙土在吉林省多地肆虐。记者从吉林省气象台获悉,这是该省入...

来源:2022-04-24

青海西宁解“静”首日见闻:解“静”不解防

西宁4月23日电 题:青海西宁解“静”首日见闻:解“静”不解防 作者 祁增蓓 23日上午,位于青海省西宁...

来源:2022-04-24

精彩推送