• 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号

  • 相关阅读:
    【C++】资源管理
    【Shell脚本】逐行处理文本文件
    【算法题】rand5()产生rand7()
    【Shell脚本】字符串处理
    Apple iOS产品硬件参数. 不及格的程序员
    与iPhone的差距! 不及格的程序员
    iPhone游戏 Mr.Karoshi"过劳死"通关. 不及格的程序员
    XCode V4 发布了, 苹果的却是个变态. 不及格的程序员
    何时readonly 字段不是 readonly 的?结果出呼你想象!!! 不及格的程序员
    object file format unrecognized, invalid, or unsuitable Command 不及格的程序员
  • 原文地址:https://www.cnblogs.com/aomi/p/3508342.html
Copyright © 2020-2023  润新知