宁波高质量品牌网站设计厂家,网站信息内容建设自查,嘉兴网站快速排名优化,昆山网站建设犀牛大叔一、前言概述
在写一些业务逻辑相对复杂点的存储过程的时候#xff0c;经常会用到临时表或者数据表作为临时结果的保存。但每次在作表是否存在的判断时#xff0c;往往想不起完整的SQL写法。因此#xff0c;记录一些常用的数据库对象是否存在的判断方法#xff0c;可以达到…一、前言概述
在写一些业务逻辑相对复杂点的存储过程的时候经常会用到临时表或者数据表作为临时结果的保存。但每次在作表是否存在的判断时往往想不起完整的SQL写法。因此记录一些常用的数据库对象是否存在的判断方法可以达到快速查找的目的。正是好记性不如烂笔头。
二、数据库相关的判断
2.1、判断数据库是否存在
IF EXISTS (SELECT * FROM sys.databases WHERE NAMETEST)PRINT 数据库TEST存在
ELSEPRINT 数据库TEST不存在
三、数据表相关的判断
3.1、判断数据表是否存在 --方法一
IF OBJECT_ID(N[dbo].[PRODUCT],NU) IS NOT NULLPRINT 数据表PRODUCT存在
ELSEPRINT 数据表PRODUCT不存在--方法二
IF EXISTS (SELECT * FROM sysobjects WHERE IDOBJECT_ID(N[dbo].[PRODUCT]) AND XTYPEU)PRINT 数据表PRODUCT存在
ELSEPRINT 数据表PRODUCT不存在--方法三
IF EXISTS (SELECT * FROM sysobjects WHERE IDOBJECT_ID(N[dbo].[PRODUCT]) AND OBJECTPROPERTY(ID,NIsUserTable)1)PRINT 数据表PRODUCT存在
ELSEPRINT 数据表PRODUCT不存在 3.2、判断临时表是否存在 --方法一
IF OBJECT_ID(Ntempdb..#PRODUCT,NU) IS NOT NULLPRINT 临时表#PRODUCT存在
ELSEPRINT 临时表#PRODUCT不存在--方法二
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE IDOBJECT_ID(Ntempdb..#PRODUCT) AND XTYPEU)PRINT 临时表#PRODUCT存在
ELSEPRINT 临时表#PRODUCT不存在 3.3、判断表是否存在某列 --方法一
IF COL_LENGTH(N[dbo].[PRODUCT],PRD_ID) IS NOT NULLPRINT 表PRODUCT存在列PRD_ID
ELSEPRINT 表PRODUCT不存在列PRD_ID--方法二
IF EXISTS (SELECT * FROM syscolumns WHERE IDOBJECT_ID(N[dbo].[PRODUCT]) AND NAMEPRD_ID)PRINT 表PRODUCT存在列PRD_ID
ELSEPRINT 表PRODUCT不存在列PRD_ID--方法三
IF EXISTS (SELECT * FROM sysobjects A INNER JOIN syscolumns B ON A.IDB.ID WHERE A.XTYPEU AND A.NAMEPRODUCT AND B.NAMEPRD_ID)PRINT 表PRODUCT存在列PRD_ID
ELSEPRINT 表PRODUCT不存在列PRD_ID 3.4、判断列是否自增列
IF COLUMNPROPERTY(OBJECT_ID(N[dbo].[PRODUCT]),PRD_ID,ISIDENTITY)1PRINT 表PRODUCT列PRD_ID是自增列
ELSEPRINT 表PRODUCT列PRD_ID不是自增列
3.5、判断表中是否存在索引
IF EXISTS(SELECT * FROM SYSINDEXES WHERE IDOBJECT_ID(N[dbo].[PRODUCT]) AND NAMEPK_PRODUCTS)PRINT 表PRODUCT存在索引PK_PRODUCTS
ELSEPRINT 表PRODUCT不存在索引PK_PRODUCTS
四、视图相关的判断
4.1、判断视图是否存在 --方法一
IF OBJECT_ID(N[dbo].[BRC_1001],V) IS NOT NULLPRINT 视图BRC_1001存在
ELSEPRINT 视图BRC_1001不存在--方法二
IF EXISTS (SELECT * FROM sysobjects where idOBJECT_ID(N[dbo].[BRC_1001]) and OBJECTPROPERTY(ID,NIsView)1)PRINT 视图BRC_1001存在
ELSEPRINT 视图BRC_1001不存在--方法三
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAMENBRC_1001)PRINT 视图BRC_1001存在
ELSEPRINT 视图BRC_1001不存在 五、存储过程相关的判断
5.1、判断存储过程是否存在 --方法一
IF OBJECT_ID(N[dbo].[BRC_BomCost],P) IS NOT NULLPRINT 存储过程BRC_BomCost存在
ELSEPRINT 存储过程BRC_BomCost不存在--方法二
IF EXISTS (SELECT * FROM sysobjects WHERE IDOBJECT_ID(N[dbo].[BRC_BomCost]) AND OBJECTPROPERTY(ID,NIsProcedure)1)PRINT 存储过程BRC_BomCost存在
ELSEPRINT 存储过程BRC_BomCost不存在 六、函数相关的判断
6.1、判断函数是否存在
IF EXISTS (SELECT * FROM sysobjects WHERE IDOBJECT_ID(N[dbo].[BRC_MLTotal]) AND XTYPE IN (NFN,NIF,NTF))PRINT 函数BRC_MLTotal存在
ELSEPRINT 函数BRC_MLTotal不存在