时间:2023-10-27来源:系统城装机大师作者:佚名
在写一些业务逻辑相对复杂点的存储过程的时候,经常会用到临时表或者数据表作为临时结果的保存。但每次在作表是否存在的判断时,往往想不起完整的SQL写法。因此,记录一些常用的数据库对象是否存在的判断方法,可以达到快速查找的目的。正是:好记性不如烂笔头。
1 2 3 4 |
IF EXISTS ( SELECT * FROM sys.databases WHERE NAME = 'TEST' ) PRINT '数据库TEST存在' ELSE PRINT '数据库TEST不存在' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
--方法一 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不存在' |
1 2 3 4 5 6 7 8 9 10 |
--方法一 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不存在' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
--方法一 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' |
1 2 3 4 |
IF COLUMNPROPERTY(OBJECT_ID(N '[dbo].[PRODUCT]' ), 'PRD_ID' , 'ISIDENTITY' )=1 PRINT '表PRODUCT列PRD_ID是自增列' ELSE PRINT '表PRODUCT列PRD_ID不是自增列' |
1 2 3 4 |
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' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
--方法一 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不存在' |
1 2 3 4 5 6 7 8 9 10 |
--方法一 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不存在' |
1 2 3 4 |
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判断数据库、表、列、视图、存储过程、函数是否存在的文章就介绍到这了
2023-10-27
windows11安装SQL server数据库报错等待数据库引擎恢复句柄失败解决办法2023-10-27
SQL Server截取字符串函数操作常见方法2023-10-27
浅谈SELECT *会导致查询效率低的原因收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间,在文件末尾创建足够的空间后,可取消对文件末尾的数据页的分配并将它们返回给文件系统,本文给大家介绍SQL Server 数据库中的收缩数据...
2023-10-27