drop table #T
这句话什么意思呢?好像我经常看到这类的语句,看那个object_id是否存在,要不就删掉这个TABLE,写这句命令是为了什么呢?什么时候才要写这命令的呢?我是不是很菜,呵
13 个解决方案
#1
判断语句.
如果 tempdb数据库中的#T临时表存在的话,则删除它.
删除它的目的是后面想要生成这个临时表,如果原先有,就生成不了了.
如果 tempdb数据库中的#T临时表存在的话,则删除它.
删除它的目的是后面想要生成这个临时表,如果原先有,就生成不了了.
#2
如果临时表#T 存在,就删除.
#3
object_id 是一个系统函数 返回架构范围内对象的数据库对象标识号。
那一句就是 如果函数object_id 返回的结果 不为 null 就执行下面的语句
那一句就是 如果函数object_id 返回的结果 不为 null 就执行下面的语句
#4
返回架构范围内对象的数据库对象标识号。
重要提示:
使用 OBJECT_ID 不能查询非架构范围内的对象(如 DDL 触发器)。对于在 sys.objects 目录视图中找不到的对象,需要通过查询适当的目录视图来获取该对象的标识号。例如,若要返回 DDL 触发器的对象标识号,请使用 SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'。
Transact-SQL 语法约定
语法
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
参数
' object_name '
要使用的对象。object_name 的数据类型为 varchar 或 nvarchar。如果 object_name 的数据类型为 varchar,则它将隐式转换为 nvarchar。可以选择是否指定数据库和架构名称。
' object_type '
架构范围的对象类型。object_type 的数据类型为 varchar 或 nvarchar。如果 object_type 的数据类型为 varchar,则它将隐式转换为 nvarchar。有关对象类型的列表,请参阅 sys.objects (Transact-SQL) 中的 type 列。
返回类型
int
异常
对于空间索引,OBJECT_ID 返回 NULL。
出现错误时,返回 NULL。
用户只能查看其拥有的安全对象的元数据,或者已对其授予权限的安全对象的元数据。也就是说,如果用户对该对象没有任何权限,则那些会生成元数据的内置函数(如 OBJECT_ID)可能返回 NULL。有关详细信息,请参阅元数据可见性配置和元数据可见性故障排除。
注释
当该参数对系统函数可选时,则采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟括号。
当指定临时表名时,除非当前数据库为 tempdb,否则必须在该临时表名之前加上数据库名称。例如:SELECT OBJECT_ID('tempdb..#mytemptable')。
系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。有关详细信息,请参阅表达式(Transact-SQL)和 WHERE (Transact-SQL)。
重要提示:
使用 OBJECT_ID 不能查询非架构范围内的对象(如 DDL 触发器)。对于在 sys.objects 目录视图中找不到的对象,需要通过查询适当的目录视图来获取该对象的标识号。例如,若要返回 DDL 触发器的对象标识号,请使用 SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'。
Transact-SQL 语法约定
语法
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
参数
' object_name '
要使用的对象。object_name 的数据类型为 varchar 或 nvarchar。如果 object_name 的数据类型为 varchar,则它将隐式转换为 nvarchar。可以选择是否指定数据库和架构名称。
' object_type '
架构范围的对象类型。object_type 的数据类型为 varchar 或 nvarchar。如果 object_type 的数据类型为 varchar,则它将隐式转换为 nvarchar。有关对象类型的列表,请参阅 sys.objects (Transact-SQL) 中的 type 列。
返回类型
int
异常
对于空间索引,OBJECT_ID 返回 NULL。
出现错误时,返回 NULL。
用户只能查看其拥有的安全对象的元数据,或者已对其授予权限的安全对象的元数据。也就是说,如果用户对该对象没有任何权限,则那些会生成元数据的内置函数(如 OBJECT_ID)可能返回 NULL。有关详细信息,请参阅元数据可见性配置和元数据可见性故障排除。
注释
当该参数对系统函数可选时,则采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟括号。
当指定临时表名时,除非当前数据库为 tempdb,否则必须在该临时表名之前加上数据库名称。例如:SELECT OBJECT_ID('tempdb..#mytemptable')。
系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。有关详细信息,请参阅表达式(Transact-SQL)和 WHERE (Transact-SQL)。
#5
#6
其实它的作用就是存在这个表的话就删除。
#7
只有在以下情况下需要用:
我要在数据库中建立一个表,但又不确定该数据库中是否存在该表,则判断如果存在该表,则删除。
因为如果不删除这个同名的表,则新建同名表则会报错不允许创建
我要在数据库中建立一个表,但又不确定该数据库中是否存在该表,则判断如果存在该表,则删除。
因为如果不删除这个同名的表,则新建同名表则会报错不允许创建
#8
就像7楼说的,如果不加这个判断,那么在数据库已经存在同名临时表的情况下,你就不能创建新的临时表了。
#9
object_id 是一个系统函数 返回架构范围内对象的数据库对象标识号。
那一句就是 如果函数object_id 返回的结果 不为 null 就执行下面的语句
那一句就是 如果函数object_id 返回的结果 不为 null 就执行下面的语句
#10
OBJECT_ID
返回数据库对象标识号。
语法
OBJECT_ID ( 'object' )
参数
'object'
要使用的对象。object 的数据类型为 char 或 nchar。如果 object 的数据类型是 char,那么隐性将其转换成 nchar。
返回类型
int
注释
当该参数对系统函数可选时,则系统采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟圆括号。
如果指定一个临时表名,则必须在临时表名前面加上数据库名,例如:
SELECT OBJECT_ID('tempdb..#mytemptable')
系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。有关更多信息,请参见表达式和 WHERE。
示例
下面的示例为 pubs 数据库中的 authors 表返回对象 ID。
USE master
SELECT OBJECT_ID('pubs..authors')
下面是结果集:
-----------
1977058079
(1 row(s) affected)
#11
if not object_id('Tempdb..#T') is null
drop table #T
可不可以写成
if object_id('Tempdb..#T') not is null
drop table #T
drop table #T
可不可以写成
if object_id('Tempdb..#T') not is null
drop table #T
#12
這是判斷對象是否存在
object_id('對象名','U')--比如這樣加"U"是用戶表,加'P'為存儲過程
object_id是把對象名編譯為ID--這是一對一方法
object_name(object_id)--是把ID轉為Name
object_id('對象名','U')--比如這樣加"U"是用戶表,加'P'為存儲過程
object_id是把對象名編譯為ID--這是一對一方法
object_name(object_id)--是把ID轉為Name
#13
感谢各位,以后要多学习系统函数
#1
判断语句.
如果 tempdb数据库中的#T临时表存在的话,则删除它.
删除它的目的是后面想要生成这个临时表,如果原先有,就生成不了了.
如果 tempdb数据库中的#T临时表存在的话,则删除它.
删除它的目的是后面想要生成这个临时表,如果原先有,就生成不了了.
#2
如果临时表#T 存在,就删除.
#3
object_id 是一个系统函数 返回架构范围内对象的数据库对象标识号。
那一句就是 如果函数object_id 返回的结果 不为 null 就执行下面的语句
那一句就是 如果函数object_id 返回的结果 不为 null 就执行下面的语句
#4
返回架构范围内对象的数据库对象标识号。
重要提示:
使用 OBJECT_ID 不能查询非架构范围内的对象(如 DDL 触发器)。对于在 sys.objects 目录视图中找不到的对象,需要通过查询适当的目录视图来获取该对象的标识号。例如,若要返回 DDL 触发器的对象标识号,请使用 SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'。
Transact-SQL 语法约定
语法
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
参数
' object_name '
要使用的对象。object_name 的数据类型为 varchar 或 nvarchar。如果 object_name 的数据类型为 varchar,则它将隐式转换为 nvarchar。可以选择是否指定数据库和架构名称。
' object_type '
架构范围的对象类型。object_type 的数据类型为 varchar 或 nvarchar。如果 object_type 的数据类型为 varchar,则它将隐式转换为 nvarchar。有关对象类型的列表,请参阅 sys.objects (Transact-SQL) 中的 type 列。
返回类型
int
异常
对于空间索引,OBJECT_ID 返回 NULL。
出现错误时,返回 NULL。
用户只能查看其拥有的安全对象的元数据,或者已对其授予权限的安全对象的元数据。也就是说,如果用户对该对象没有任何权限,则那些会生成元数据的内置函数(如 OBJECT_ID)可能返回 NULL。有关详细信息,请参阅元数据可见性配置和元数据可见性故障排除。
注释
当该参数对系统函数可选时,则采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟括号。
当指定临时表名时,除非当前数据库为 tempdb,否则必须在该临时表名之前加上数据库名称。例如:SELECT OBJECT_ID('tempdb..#mytemptable')。
系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。有关详细信息,请参阅表达式(Transact-SQL)和 WHERE (Transact-SQL)。
重要提示:
使用 OBJECT_ID 不能查询非架构范围内的对象(如 DDL 触发器)。对于在 sys.objects 目录视图中找不到的对象,需要通过查询适当的目录视图来获取该对象的标识号。例如,若要返回 DDL 触发器的对象标识号,请使用 SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'。
Transact-SQL 语法约定
语法
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
参数
' object_name '
要使用的对象。object_name 的数据类型为 varchar 或 nvarchar。如果 object_name 的数据类型为 varchar,则它将隐式转换为 nvarchar。可以选择是否指定数据库和架构名称。
' object_type '
架构范围的对象类型。object_type 的数据类型为 varchar 或 nvarchar。如果 object_type 的数据类型为 varchar,则它将隐式转换为 nvarchar。有关对象类型的列表,请参阅 sys.objects (Transact-SQL) 中的 type 列。
返回类型
int
异常
对于空间索引,OBJECT_ID 返回 NULL。
出现错误时,返回 NULL。
用户只能查看其拥有的安全对象的元数据,或者已对其授予权限的安全对象的元数据。也就是说,如果用户对该对象没有任何权限,则那些会生成元数据的内置函数(如 OBJECT_ID)可能返回 NULL。有关详细信息,请参阅元数据可见性配置和元数据可见性故障排除。
注释
当该参数对系统函数可选时,则采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟括号。
当指定临时表名时,除非当前数据库为 tempdb,否则必须在该临时表名之前加上数据库名称。例如:SELECT OBJECT_ID('tempdb..#mytemptable')。
系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。有关详细信息,请参阅表达式(Transact-SQL)和 WHERE (Transact-SQL)。
#5
#6
其实它的作用就是存在这个表的话就删除。
#7
只有在以下情况下需要用:
我要在数据库中建立一个表,但又不确定该数据库中是否存在该表,则判断如果存在该表,则删除。
因为如果不删除这个同名的表,则新建同名表则会报错不允许创建
我要在数据库中建立一个表,但又不确定该数据库中是否存在该表,则判断如果存在该表,则删除。
因为如果不删除这个同名的表,则新建同名表则会报错不允许创建
#8
就像7楼说的,如果不加这个判断,那么在数据库已经存在同名临时表的情况下,你就不能创建新的临时表了。
#9
object_id 是一个系统函数 返回架构范围内对象的数据库对象标识号。
那一句就是 如果函数object_id 返回的结果 不为 null 就执行下面的语句
那一句就是 如果函数object_id 返回的结果 不为 null 就执行下面的语句
#10
OBJECT_ID
返回数据库对象标识号。
语法
OBJECT_ID ( 'object' )
参数
'object'
要使用的对象。object 的数据类型为 char 或 nchar。如果 object 的数据类型是 char,那么隐性将其转换成 nchar。
返回类型
int
注释
当该参数对系统函数可选时,则系统采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟圆括号。
如果指定一个临时表名,则必须在临时表名前面加上数据库名,例如:
SELECT OBJECT_ID('tempdb..#mytemptable')
系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。有关更多信息,请参见表达式和 WHERE。
示例
下面的示例为 pubs 数据库中的 authors 表返回对象 ID。
USE master
SELECT OBJECT_ID('pubs..authors')
下面是结果集:
-----------
1977058079
(1 row(s) affected)
#11
if not object_id('Tempdb..#T') is null
drop table #T
可不可以写成
if object_id('Tempdb..#T') not is null
drop table #T
drop table #T
可不可以写成
if object_id('Tempdb..#T') not is null
drop table #T
#12
這是判斷對象是否存在
object_id('對象名','U')--比如這樣加"U"是用戶表,加'P'為存儲過程
object_id是把對象名編譯為ID--這是一對一方法
object_name(object_id)--是把ID轉為Name
object_id('對象名','U')--比如這樣加"U"是用戶表,加'P'為存儲過程
object_id是把對象名編譯為ID--這是一對一方法
object_name(object_id)--是把ID轉為Name
#13
感谢各位,以后要多学习系统函数