参考下面代码,有方法一和方法二,判断临时表是否存在。但是方法一非临时表也可以使用,而方法二,纯判断临时表是否存在。
方法一:
DECLARE @TABLE_NAME SYSNAME = '[#table_name]', --传入临时表名 @TABLE_SCHEMA SYSNAME = N'[dbo]', @TABLE_CATALOG SYSNAME = N'[tempdb]' IF OBJECT_ID(@TABLE_CATALOG + N'.'+ @TABLE_SCHEMA + N'.' + @TABLE_NAME) IS NOT NULL PRINT(N'存在。') ELSE PRINT(N'不存在。')
方法二:
DECLARE @TABLE_NAME SYSNAME = '[#table_name]', --传入临时表名 @TABLE_SCHEMA SYSNAME = N'[dbo]', @TABLE_CATALOG SYSNAME = N'[tempdb]' IF EXISTS(SELECT TOP 1 1 FROM [tempdb].[dbo].[sysobjects] o WHERE o.[xtype] IN ('U') AND o.[id] = object_id(@TABLE_CATALOG + N'.'+ @TABLE_SCHEMA + N'.' + @TABLE_NAME)) PRINT(N'存在。') ELSE PRINT(N'不存在。')
举例说明,例子一,临时表名不存在:
再举个例子,临时表名存在: