文章詳情頁(yè)
SQL Server判斷數(shù)據(jù)庫(kù)、表、列、視圖、存儲(chǔ)過(guò)程、函數(shù)是否存在總結(jié)
瀏覽:176日期:2023-05-02 10:03:15
目錄
- 一、前言概述
- 二、數(shù)據(jù)庫(kù)相關(guān)的判斷
- 2.1、判斷數(shù)據(jù)庫(kù)是否存在
- 三、數(shù)據(jù)表相關(guān)的判斷
- 3.1、判斷數(shù)據(jù)表是否存在
- 3.2、判斷臨時(shí)表是否存在
- 3.3、判斷表是否存在某列
- 3.4、判斷列是否自增列
- 3.5、判斷表中是否存在索引
- 四、視圖相關(guān)的判斷
- 4.1、判斷視圖是否存在
- 五、存儲(chǔ)過(guò)程相關(guān)的判斷
- 5.1、判斷存儲(chǔ)過(guò)程是否存在
- 六、函數(shù)相關(guān)的判斷
- 6.1、判斷函數(shù)是否存在
一、前言概述
在寫一些業(yè)務(wù)邏輯相對(duì)復(fù)雜點(diǎn)的存儲(chǔ)過(guò)程的時(shí)候,經(jīng)常會(huì)用到臨時(shí)表或者數(shù)據(jù)表作為臨時(shí)結(jié)果的保存。但每次在作表是否存在的判斷時(shí),往往想不起完整的SQL寫法。因此,記錄一些常用的數(shù)據(jù)庫(kù)對(duì)象是否存在的判斷方法,可以達(dá)到快速查找的目的。正是:好記性不如爛筆頭。
二、數(shù)據(jù)庫(kù)相關(guān)的判斷
2.1、判斷數(shù)據(jù)庫(kù)是否存在
IF EXISTS (SELECT * FROM sys.databases WHERE NAME="TEST") PRINT "數(shù)據(jù)庫(kù)TEST存在" ELSE PRINT "數(shù)據(jù)庫(kù)TEST不存在"
三、數(shù)據(jù)表相關(guān)的判斷
3.1、判斷數(shù)據(jù)表是否存在
--方法一 IF OBJECT_ID(N"[dbo].[PRODUCT]",N"U") IS NOT NULL PRINT "數(shù)據(jù)表PRODUCT存在" ELSE PRINT "數(shù)據(jù)表PRODUCT不存在" --方法二 IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N"[dbo].[PRODUCT]") AND XTYPE="U") PRINT "數(shù)據(jù)表PRODUCT存在" ELSE PRINT "數(shù)據(jù)表PRODUCT不存在" --方法三 IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N"[dbo].[PRODUCT]") AND OBJECTPROPERTY(ID,N"IsUserTable")=1) PRINT "數(shù)據(jù)表PRODUCT存在" ELSE PRINT "數(shù)據(jù)表PRODUCT不存在"
3.2、判斷臨時(shí)表是否存在
--方法一 IF OBJECT_ID(N"tempdb..#PRODUCT",N"U") IS NOT NULL PRINT "臨時(shí)表#PRODUCT存在" ELSE PRINT "臨時(shí)表#PRODUCT不存在" --方法二 IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE ID=OBJECT_ID(N"tempdb..#PRODUCT") AND XTYPE="U") PRINT "臨時(shí)表#PRODUCT存在" ELSE PRINT "臨時(shí)表#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"
四、視圖相關(guān)的判斷
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不存在"
五、存儲(chǔ)過(guò)程相關(guān)的判斷
5.1、判斷存儲(chǔ)過(guò)程是否存在
--方法一 IF OBJECT_ID(N"[dbo].[BRC_BomCost]","P") IS NOT NULL PRINT "存儲(chǔ)過(guò)程BRC_BomCost存在" ELSE PRINT "存儲(chǔ)過(guò)程BRC_BomCost不存在" --方法二 IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N"[dbo].[BRC_BomCost]") AND OBJECTPROPERTY(ID,N"IsProcedure")=1) PRINT "存儲(chǔ)過(guò)程BRC_BomCost存在" ELSE PRINT "存儲(chǔ)過(guò)程BRC_BomCost不存在"
六、函數(shù)相關(guān)的判斷
6.1、判斷函數(shù)是否存在
IF EXISTS (SELECT * FROM sysobjects WHERE ID=OBJECT_ID(N"[dbo].[BRC_MLTotal]") AND XTYPE IN (N"FN",N"IF",N"TF")) PRINT "函數(shù)BRC_MLTotal存在" ELSE PRINT "函數(shù)BRC_MLTotal不存在"
到此這篇關(guān)于SQL Server判斷數(shù)據(jù)庫(kù)、表、列、視圖、存儲(chǔ)過(guò)程、函數(shù)是否存在的文章就介紹到這了,更多相關(guān)sqlserver判斷視圖函數(shù)內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
標(biāo)簽:
MsSQL
排行榜
