查询用户表是否存在的方法及举例
方法1:通过查询系统表:
1)测试查询:
1
Declare
2
@TableName VarChar(50)
3
Set @TableName = 'tb’
4
If Exists (Select * From sysobjects
5
Where name = @TableName And TYPE = 'u')
6
Print 'EXISTS '
7
Else
8
Print 'NOT EXISTS '
Declare2
@TableName VarChar(50)3
Set @TableName = 'tb’4
If Exists (Select * From sysobjects5
Where name = @TableName And TYPE = 'u')6
Print 'EXISTS '7
Else8
Print 'NOT EXISTS '2)查询应用举例:
数据库AdventureWorks,表:Sales.Store
1
Use AdventureWorks
2
If(Exists
3
(Select * From dbo.sysobjects
4
Where xtype = 'u' And Name = 'Store'))
5
/*此处为何不能是Sales.Store?是对引用表名的讲究还是Bug?*/
6![]()
7
Print 'Table Sales.Store in AdventureWorks Exists!'
8
Else
9
Print 'Table Sales.Store in AdventureWorks Not Exists!'
Use AdventureWorks2
If(Exists3
(Select * From dbo.sysobjects4
Where xtype = 'u' And Name = 'Store')) 5
/*此处为何不能是Sales.Store?是对引用表名的讲究还是Bug?*/6

7
Print 'Table Sales.Store in AdventureWorks Exists!'8
Else9
Print 'Table Sales.Store in AdventureWorks Not Exists!'方法2:通过判断系统对象是否存在:
1)测试查询:
1
Declare @TableName VarChar(50)
2
Set @TableName = 'tb'
3![]()
4
If objectproperty(object_id(@TableName),'IsUserTable') Is Not Null
5
Print 'Exists!'
6
Else
7
Print 'Not Exists '
8![]()
9
/*或者*/
10
If (Exists
11
(Select * From dbo.sysobjects
12
Where id = object_id(N'@TableName') and objectproperty(id,'IsUserTable') = 1))
13
/* N'@TableName'中的N表示NVarChar*/
14![]()
15
Print 'Exists!'
16
Else
17
Print 'Not Exists!'
18![]()
19
/*或者*/
20
If object_id(@TableName) Is Not Null
21
Print 'Exists!'
22
Else
23
Print 'Not Exists!'
24![]()
25
/*或者*/
26
If Exists (Select Object_id(@TableName))
27
Print 'Exists!'
28
Else
29
Print 'Not Exists!'
Declare @TableName VarChar(50)2
Set @TableName = 'tb'3

4
If objectproperty(object_id(@TableName),'IsUserTable') Is Not Null 5
Print 'Exists!'6
Else7
Print 'Not Exists '8

9
/*或者*/10
If (Exists11
(Select * From dbo.sysobjects12
Where id = object_id(N'@TableName') and objectproperty(id,'IsUserTable') = 1))13
/* N'@TableName'中的N表示NVarChar*/14

15
Print 'Exists!'16
Else17
Print 'Not Exists!'18

19
/*或者*/20
If object_id(@TableName) Is Not Null 21
Print 'Exists!'22
Else23
Print 'Not Exists!'24

25
/*或者*/26
If Exists (Select Object_id(@TableName))27
Print 'Exists!'28
Else29
Print 'Not Exists!'2)查询应用举例:
数据库AdventureWorks,表:Sales.Store
1
Use AdventureWorks
2
If(Exists
3
(Select * From dbo.sysobjects
4
Where id = object_id(N'Sales.Store') and objectproperty(id,'IsUserTable')=1))
5
/*此处表名必须是Sales.Store,若用Store则打印不存在*/
6![]()
7
Print 'Table Sales.Store in AdventureWorks Exists!'
8
Else
9
Print 'Table Sales.Store in AdventureWorks Not Exists!'
10![]()
11
/*或者*/
12
If object_id('Sales.Store') Is Not Null
13
/*此处表名用Sales.Store和Store都可以,有意思吧?*/
14![]()
15
Print 'Table Sales.Store in AdventureWorks Exists!'
16
Else
17
Print 'Table Sales.Store in AdventureWorks Not Exists!'
18![]()
19
/*或者*/
20
If Exists (Select Object_id('Store'))
21
/*此处表名用Sales.Store和Store都可以*/
22![]()
23
Print 'Table Sales.Store in AdventureWorks Exists!'
24
Else
25
Print 'Table Sales.Store in AdventureWorks Not Exists!'
Use AdventureWorks2
If(Exists3
(Select * From dbo.sysobjects4
Where id = object_id(N'Sales.Store') and objectproperty(id,'IsUserTable')=1))5
/*此处表名必须是Sales.Store,若用Store则打印不存在*/6

7
Print 'Table Sales.Store in AdventureWorks Exists!'8
Else9
Print 'Table Sales.Store in AdventureWorks Not Exists!'10

11
/*或者*/12
If object_id('Sales.Store') Is Not Null13
/*此处表名用Sales.Store和Store都可以,有意思吧?*/14

15
Print 'Table Sales.Store in AdventureWorks Exists!'16
Else17
Print 'Table Sales.Store in AdventureWorks Not Exists!'18

19
/*或者*/20
If Exists (Select Object_id('Store'))21
/*此处表名用Sales.Store和Store都可以*/22

23
Print 'Table Sales.Store in AdventureWorks Exists!'24
Else25
Print 'Table Sales.Store in AdventureWorks Not Exists!'P.S.:不同的方法要求不同,尤其是引用用户表名称的时候表现的比较突出。

浙公网安备 33010602011771号