SQL中OBJECT_ID,OBJECT_NAME,OBJECT_DEFINITION的用法
SQL中OBJECT_ID,OBJECT_NAME,OBJECT_DEFINITION的用法
标签:OBJECT_ID,OBJECT_NAME,OBJECT_DEFINITION
在SQL SERVER中数据库中的对象(表,存储过程,函数,视图等)在系统表中保存都用objectid做标识的.执行下面的SQL就明白了:
- SELECT * FROM sys.objects
与对象相关最常用的三个函数:
OBJECT_ID:此方法返回数据库对象标识号。类型为int,表示该对象在系统中的编号。
OBJECT_NAME:根据对象ID得到对象名
OBJECT_DEFINITION:返回对象的源文件.
示例1:
- --新建一个存储过程
- create PROCEDURE [dbo].[usp_TestProcedure]
- AS
- BEGIN
- PRINT 'this is a procedure '
- END
- DECLARE @ObjectID INT
- DECLARE @ObjectName varchar(20)
- DECLARE @ObjectDefine varchar(max)
- SET @ObjectID = OBJECT_ID('usp_TestProcedure')
- set @ObjectName = OBJECT_NAME(@ObjectID)
- SET @ObjectDefine = OBJECT_DEFINITION(@ObjectID)
- select @ObjectID,@ObjectName,@ObjectDefine
其中@ObjectName为:usp_TestProcedure.
@ObjectDefine:
- create PROCEDURE [dbo].[usp_TestProcedure]
- AS
- BEGIN
- PRINT 'this is a procedure '
- END
示例2:
a.表不存在时新建表:
- IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[cs_Threads]') AND type in (N'U'))
- BEGIN
- CREATE TABLE [dbo].[cs_Threads](
- [ThreadID] [int] IDENTITY(1,1) NOT NULL,
- [SectionID] [int] NOT NULL,
- [UserID] [int] NOT NULL,
- [PostAuthor] [nvarchar](64) NULL CONSTRAINT [DF_cs_Threads_PostAuthor] DEFAULT (''),
- [PostDate] [datetime] NOT NULL,
- [ThreadDate] [datetime] NOT NULL,
- [LastViewedDate] [datetime] NOT NULL CONSTRAINT [DF_cs_Threads_LastViewedDate] DEFAULT (getdate()),
- [StickyDate] [datetime] NOT NULL,
- [TotalViews] [int] NOT NULL CONSTRAINT [DF_cs_Threads_TotalViews] DEFAULT ((0)),
- [TotalReplies] [int] NOT NULL CONSTRAINT [DF_cs_Threads_TotalReplies] DEFAULT ((0)),
- [MostRecentPostAuthorID] [int] NOT NULL,
- [MostRecentPostAuthor] [nvarchar](64) NULL CONSTRAINT [DF_cs_Threads_MostRecentPostAuthor] DEFAULT (''),
- [MostRecentPostID] [int] NOT NULL,
- [IsLocked] [bit] NOT NULL,
- [IsSticky] [bit] NOT NULL,
- [IsApproved] [bit] NOT NULL CONSTRAINT [DF_cs_Threads_IsApproved] DEFAULT ((1)),
- [RatingSum] [int] NOT NULL CONSTRAINT [DF_cs_Threads_RatingSum] DEFAULT ((0)),
- [TotalRatings] [int] NOT NULL CONSTRAINT [DF_cs_Threads_TotalRating] DEFAULT ((0)),
- [ThreadEmoticonID] [int] NOT NULL CONSTRAINT [DF_cs_Threads_ThreadEmoticon] DEFAULT ((0)),
- [ThreadStatus] [int] NOT NULL CONSTRAINT [DF_cs_Threads_ThreadStatus] DEFAULT ((0)),
- [SettingsID] [int] NULL,
- CONSTRAINT [PK_cs_Threads] PRIMARY KEY CLUSTERED
- (
- [ThreadID] ASC
- )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
- ) ON [PRIMARY]
- END
- GO
b.存储过程不存在时,新建存储过程
- 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'))
- BEGIN
- EXEC dbo.sp_executesql @statement = N'
- CREATE PROCEDURE [dbo].[cs_PostCategories_Get_ByName]
- @Name nvarchar(256),
- @SectionQuerySQL ntext,
- @SettingsID int
- AS
- SET Transaction Isolation Level Read UNCOMMITTED
- CREATE TABLE #Sections
- (
- SectionID int
- )
- INSERT INTO #Sections (SectionID)
- EXEC (@SectionQuerySQL)
- SELECT
- C.CategoryID, C.SectionID, C.Name, C.IsEnabled, C.ParentID, C.Path, C.Description, C.SettingsID,
- C.TotalThreads, C.MostRecentPostDate, C.TotalSubThreads, C.MostRecentSubPostDate, C.DateCreated, C.FeaturedPostID
- FROM cs_Post_Categories C
- WHERE C.SectionID in (select SectionID from #Sections)
- and C.SettingsID = @SettingsID
- and C.[Name] = @Name
- '
- END
c.索引不存在时,新建索引
- IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[cs_Threads]') AND name = N'IX_cs_Threads')
- CREATE NONCLUSTERED INDEX [IX_cs_Threads] ON [dbo].[cs_Threads]
- (
- [SectionID] ASC,
- [ThreadID] DESC
- )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
- GO
SQL中OBJECT_ID,OBJECT_NAME,OBJECT_DEFINITION的用法相关推荐
- SQL中object_id函数的用法
SQL中object_id函数的用法 收藏 int object_id('objectname'); 此方法返回数据库对象标识号. 其中,参数objectname 表示要使用的对象,其数据类型为nc ...
- sql中group by 和having 用法解析
--sql中的group by 用法解析: -- Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)". --它的作用是通过一定的规则将一 ...
- 关于SQL中Union和Join的用法
转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 一直以来,对于数据库SQL方面都是半吊子水平,能写一些基本的增删改查的语句,大部分时间都是用下Where, ...
- sql中exists,not exists的用法
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如: select name from student where sex = 'm' and mark exists(selec ...
- SQL中DATEADD和DATEDIFF的用法
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函 ...
- sql中having、group by用法及常用聚合函数
having是用在聚合函数的用法.当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算.运算完后就要用到HAVING 的用法了,就是进行判断了. 注意:sele ...
- SQL 中 TRIM()函数用法
问题描述: 在数据库中,批量导入数据的时候,没有注意字段数据的空格,造成导入数据库里的数据末尾有空格. 解决方案: trim() 函数介绍: trim 函数可以移除字符串的首尾信息.最常见的用法为移除 ...
- SQL中的CONVERT函数的用法
定义和用法 CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用不同的格式显示日期/时间数据. 语法 CONVERT(data_type(length),dat ...
- sql中insert的几种用法
在做项目中数据库是使用很频繁的,其中插入语句是最频繁不过的,近日写了一些存储过程,又将inset 语句看了遍. 一般格式: insert into 表名 (column1,column2,column ...
最新文章
- shaderlab学习一
- Python 小把戏之下载小说
- HDOJ 2041 超级楼梯
- leelen可视对讲怎么接线_楼宇对讲系统怎么布线 楼宇对讲系统布线方式【介绍】...
- 视频 | MIT计算机科学速成课
- MyISAM与InnoDB的区别是什么?
- java 格式化日期 星期_java 日期格式化
- PHP从入门到精通(数组运算符篇)
- 我国学生被美深泉学院录取 每周20小时放牛种草
- 那些年面挂的js手写题
- Android Studio使用天天模拟器运行Android程序
- WiFi的商业运作模式
- [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题...
- cadence 旋转快捷键_cadence快捷键
- java 翻译 go语言_【翻译】go是面向对象语言吗?
- python枚举是什么意思_什么是枚举python
- windows10 家庭版 Hyper-V 虚拟机服务开启与应用 (一)
- Induction Networks for Few-Shot Text Classification(2020-08-31)
- nas 软件 性能测试,铁威马NAS数据传输性能测试
- JoVE肿瘤转移专刊征稿,写方法拍视频教程发SCI