zoukankan      html  css  js  c++  java
  • object_id的用法

    OBJECT_ID: 
    返回数据库对象标识号。

    语法 
    OBJECT_ID ( 'object' )

    参数 
    'object'

    要使用的对象。object 的数据类型为 char 或 nchar。如果 object 的数据类型是 char,那么隐性将其转换成 nchar。

    返回类型 
    int

    注释 
    当该参数对系统函数可选时,则系统采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟圆括号。

    1.如果指定一个临时表名,则必须在临时表名前面加上数据库名,例如:

    SELECT OBJECT_ID('tempdb..#mytemptable')

    系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。有关更多信息,请参见表达式和 WHERE。

    示例 
    2.下面的示例为 pubs 数据库中的 authors 表返回对象 ID。

    USE master 
    SELECT OBJECT_ID('pubs..authors')

    下面是结果集:

    ----------- 
    1977058079

    (1 row(s) affected)

     

    3.判断数据库对象是否存在

    if object_id(N'对象名',N'对象类型') is not null  执行语句

    可选对象类型:

    AF = 聚合函数 (CLR)

    C = CHECK 约束

    D = DEFAULT(约束或独立)

    F = FOREIGN KEY 约束

    FN = SQL 标量函数

    FS = 程序集 (CLR) 标量函数

    FT = 程序集 (CLR) 表值函数

    IF = SQL 内联表值函数

    IT = 内部表

    P = SQL 存储过程

    PC = 程序集 (CLR) 存储过程

    PG = 计划指南

    PK = PRIMARY KEY 约束

    R = 规则(旧式,独立)

    RF = 复制筛选过程

    S = 系统基表

    SN = 同义词

    SQ = 服务队列

    TA = 程序集 (CLR) DML 触发器

    TF = SQL 表值函数

    TR = SQL DML 触发器

    U = 表(用户定义类型)

    UQ = UNIQUE 约束

    V = 视图

    X = 扩展存储过程

    例子 :

    删除用户表

    if object_id(N'表名',N'U') is not null drop table 表名

    删除存储过程

    if object_id(N'存储过程名',N'P') is not null drop procedure 存储过程名

    4.此方法一般用来判断数据库中本来用没有此对象(procedures,views,functions等),如在新建一个存储过程时我们可以看到这样的语句:

    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_send_email]') AND type in (N'P', N'PC'))

    事先判断数据库中是否已经存在存储过程usp_send_email,

    5.if object_id('tempdb.dbo.#TempTable') is not null 
    drop table #TempTable
    =
    if object_id('tempdb..#TempTable') is not null 
    drop table #TempTable
    代表中间所有者默认为dbo

    注意:object_id就是根据对象名称返回该对象的id.
      object_name是根据对象id返回对象名称.
      select object_id(对象名)等同于:
      select id from sysobjects where name=对象名

       select object_name(id号)等同于:
      select name from sysobjects where id=id号

  • 相关阅读:
    sql 中 in 与 exist 的区别
    with as (cte common table expression) 公共表表达式
    配置连接数据库的方式
    Dispose 与 close 方法 的区别
    抽象类
    default
    什么叫无符号整型
    hdu 5187 zhx's contest [ 找规律 + 快速幂 + 快速乘法 || Java ]
    poj 2480 Longge's problem [ 欧拉函数 ]
    lightoj 1293
  • 原文地址:https://www.cnblogs.com/aomi/p/3508342.html
Copyright © 2011-2022 走看看