SQL中OBJECT_ID,OBJECT_NAME,OBJECT_DEFINITION的用法

-

标签:OBJECT_ID,OBJECT_NAME,OBJECT_DEFINITION

在SQL SERVER中数据库中的对象(表,存储过程,函数,视图等)在系统表中保存都用objectid做标识的.执行下面的SQL就明白了:

  1. SELECT * FROM sys.objects

与对象相关最常用的三个函数:

OBJECT_ID:此方法返回数据库对象标识号。类型为int,表示该对象在系统中的编号。

OBJECT_NAME:根据对象ID得到对象名

OBJECT_DEFINITION:返回对象的源文件.

示例1:

  1. --新建一个存储过程
  2. create PROCEDURE [dbo].[usp_TestProcedure]
  3. AS
  4. BEGIN
  5. PRINT 'this is a procedure '
  6. END
  1. DECLARE @ObjectID INT
  2. DECLARE @ObjectName varchar(20)
  3. DECLARE @ObjectDefine varchar(max)
  4. SET @ObjectID = OBJECT_ID('usp_TestProcedure')
  5. set @ObjectName = OBJECT_NAME(@ObjectID)
  6. SET @ObjectDefine = OBJECT_DEFINITION(@ObjectID)
  1. select @ObjectID,@ObjectName,@ObjectDefine

其中@ObjectName为:usp_TestProcedure.

@ObjectDefine:

  1. create PROCEDURE [dbo].[usp_TestProcedure]
  2. AS
  3. BEGIN
  4. PRINT 'this is a procedure '
  5. END

示例2:

a.表不存在时新建表:

  1. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[cs_Threads]') AND type in (N'U'))
  2. BEGIN
  3. CREATE TABLE [dbo].[cs_Threads](
  4. [ThreadID] [int] IDENTITY(1,1) NOT NULL,
  5. [SectionID] [int] NOT NULL,
  6. [UserID] [int] NOT NULL,
  7. [PostAuthor] [nvarchar](64) NULL CONSTRAINT [DF_cs_Threads_PostAuthor]  DEFAULT (''),
  8. [PostDate] [datetime] NOT NULL,
  9. [ThreadDate] [datetime] NOT NULL,
  10. [LastViewedDate] [datetime] NOT NULL CONSTRAINT [DF_cs_Threads_LastViewedDate]  DEFAULT (getdate()),
  11. [StickyDate] [datetime] NOT NULL,
  12. [TotalViews] [int] NOT NULL CONSTRAINT [DF_cs_Threads_TotalViews]  DEFAULT ((0)),
  13. [TotalReplies] [int] NOT NULL CONSTRAINT [DF_cs_Threads_TotalReplies]  DEFAULT ((0)),
  14. [MostRecentPostAuthorID] [int] NOT NULL,
  15. [MostRecentPostAuthor] [nvarchar](64) NULL CONSTRAINT [DF_cs_Threads_MostRecentPostAuthor]  DEFAULT (''),
  16. [MostRecentPostID] [int] NOT NULL,
  17. [IsLocked] [bit] NOT NULL,
  18. [IsSticky] [bit] NOT NULL,
  19. [IsApproved] [bit] NOT NULL CONSTRAINT [DF_cs_Threads_IsApproved]  DEFAULT ((1)),
  20. [RatingSum] [int] NOT NULL CONSTRAINT [DF_cs_Threads_RatingSum]  DEFAULT ((0)),
  21. [TotalRatings] [int] NOT NULL CONSTRAINT [DF_cs_Threads_TotalRating]  DEFAULT ((0)),
  22. [ThreadEmoticonID] [int] NOT NULL CONSTRAINT [DF_cs_Threads_ThreadEmoticon]  DEFAULT ((0)),
  23. [ThreadStatus] [int] NOT NULL CONSTRAINT [DF_cs_Threads_ThreadStatus]  DEFAULT ((0)),
  24. [SettingsID] [int] NULL,
  25. CONSTRAINT [PK_cs_Threads] PRIMARY KEY CLUSTERED
  26. (
  27. [ThreadID] ASC
  28. )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
  29. ) ON [PRIMARY]
  30. END
  31. GO

b.存储过程不存在时,新建存储过程

  1. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[cs_PostCategories_Get_ByName]') AND type in (N'P', N'PC'))
  2. BEGIN
  3. EXEC dbo.sp_executesql @statement = N'
  4. CREATE PROCEDURE [dbo].[cs_PostCategories_Get_ByName]
  5. @Name nvarchar(256),
  6. @SectionQuerySQL ntext,
  7. @SettingsID int
  8. AS
  9. SET Transaction Isolation Level Read UNCOMMITTED
  10. CREATE TABLE #Sections
  11. (
  12. SectionID int
  13. )
  14. INSERT INTO #Sections (SectionID)
  15. EXEC (@SectionQuerySQL)
  16. SELECT
  17. C.CategoryID, C.SectionID, C.Name, C.IsEnabled, C.ParentID, C.Path, C.Description, C.SettingsID,
  18. C.TotalThreads, C.MostRecentPostDate, C.TotalSubThreads, C.MostRecentSubPostDate, C.DateCreated, C.FeaturedPostID
  19. FROM cs_Post_Categories C
  20. WHERE C.SectionID in (select SectionID from #Sections)
  21. and C.SettingsID = @SettingsID
  22. and C.[Name] = @Name
  23. '
  24. END

c.索引不存在时,新建索引

  1. IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[cs_Threads]') AND name = N'IX_cs_Threads')
  2. CREATE NONCLUSTERED INDEX [IX_cs_Threads] ON [dbo].[cs_Threads]
  3. (
  4. [SectionID] ASC,
  5. [ThreadID] DESC
  6. )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
  7. GO

SQL中OBJECT_ID,OBJECT_NAME,OBJECT_DEFINITION的用法相关推荐

  1. SQL中object_id函数的用法

    SQL中object_id函数的用法 收藏  int object_id('objectname'); 此方法返回数据库对象标识号. 其中,参数objectname 表示要使用的对象,其数据类型为nc ...

  2. sql中group by 和having 用法解析

    --sql中的group by 用法解析: -- Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)". --它的作用是通过一定的规则将一 ...

  3. 关于SQL中Union和Join的用法

    转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 一直以来,对于数据库SQL方面都是半吊子水平,能写一些基本的增删改查的语句,大部分时间都是用下Where, ...

  4. sql中exists,not exists的用法

    exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:   select name from student where sex = 'm' and mark exists(selec ...

  5. SQL中DATEADD和DATEDIFF的用法

    通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函 ...

  6. sql中having、group by用法及常用聚合函数

    having是用在聚合函数的用法.当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算.运算完后就要用到HAVING 的用法了,就是进行判断了. 注意:sele ...

  7. SQL 中 TRIM()函数用法

    问题描述: 在数据库中,批量导入数据的时候,没有注意字段数据的空格,造成导入数据库里的数据末尾有空格. 解决方案: trim() 函数介绍: trim 函数可以移除字符串的首尾信息.最常见的用法为移除 ...

  8. SQL中的CONVERT函数的用法

    定义和用法 CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用不同的格式显示日期/时间数据. 语法 CONVERT(data_type(length),dat ...

  9. sql中insert的几种用法

    在做项目中数据库是使用很频繁的,其中插入语句是最频繁不过的,近日写了一些存储过程,又将inset 语句看了遍. 一般格式: insert into 表名 (column1,column2,column ...

最新文章

  1. shaderlab学习一
  2. Python 小把戏之下载小说
  3. HDOJ 2041 超级楼梯
  4. leelen可视对讲怎么接线_楼宇对讲系统怎么布线 楼宇对讲系统布线方式【介绍】...
  5. 视频 | MIT计算机科学速成课
  6. MyISAM与InnoDB的区别是什么?
  7. java 格式化日期 星期_java 日期格式化
  8. PHP从入门到精通(数组运算符篇)
  9. 我国学生被美深泉学院录取 每周20小时放牛种草
  10. 那些年面挂的js手写题
  11. Android Studio使用天天模拟器运行Android程序
  12. WiFi的商业运作模式
  13. [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题...
  14. cadence 旋转快捷键_cadence快捷键
  15. java 翻译 go语言_【翻译】go是面向对象语言吗?
  16. python枚举是什么意思_什么是枚举python
  17. windows10 家庭版 Hyper-V 虚拟机服务开启与应用 (一)
  18. Induction Networks for Few-Shot Text Classification(2020-08-31)
  19. nas 软件 性能测试,铁威马NAS数据传输性能测试
  20. JoVE肿瘤转移专刊征稿,写方法拍视频教程发SCI

热门文章

  1. 【Java虚拟机的垃圾收集算法】
  2. apache 和 nginx 301重定向配置方法
  3. 微软的搜索引擎挺不错的
  4. JAVA中JPasswordField实现密码的确认
  5. java读取pfx或P12格式的个人交换库公私钥
  6. IDA Pro的patch插件 KeyPatch
  7. 调用iOS系统本地相册或摄像头
  8. 微软的最高市值是多少?
  9. Siverlight5新功能/改进总结
  10. windows+php+mysql+apache(wamp)安装配置问题