一种在SQLServer中实现Sequence的方法

文档序号:8543769阅读:512来源:国知局
一种在SQL Server中实现Sequence的方法
【技术领域】
[0001] 本发明设及SQLServer数据库技术领域,尤其是一种在SQLServer中实现 Sequence的方法。
【背景技术】
[0002] SQLServer是Microsoft公司推出的SQLServer数据库管理系统。
[0003]Sequence是数据库系统的特性,有的数据库实现了Sequence,有的则没有,比如 Oracle、DB2、PostgreS化数据库实现Sequence,MySQL、SQLServer、Sybase等数据库没有 Sequence。
[0004] 目前面临的主要问题有:
[0005] 在ORACLE里面用惯了Sequence,要在SQLServer里实现Sequence,就会发现没 有现成的Sequence对象可W创建。
[0006] 前述问题,有采取"最大值+1"的方式沿种方式实现起来也比较简单。当然,由 于Sql的实现方式是采用identity列,自增的方式去增加就可W实现了。但是该样的列如 果要实现"YYYYMMDD"+Sequence值(例如;2014112000001)的格式就不行了。
[0007] 上述实现方式在并发性请求不那么高的系统里,该种过程是没有问题的。但是并 发性请求一旦处于某个量级W后,该个过程常常会遇到问题。

【发明内容】

[000引本发明解决的技术问题在于提供一种在SQLServer中实现Sequence的方法,解 决了实现SQLServer中得到Sequence的值的格式,并适合于高吞吐量的访问请求,比如每 秒数千次的请求。
[0009] 本发明解决上述技术问题的技术方案是:
[0010] 所述的方法包括如下步骤:
[0011]步骤一,创建表SeqQuickResponseCode;
[0012] 步骤二,创建从SeqQuickResponseCode表获取最新Sequence值的存储过程;
[0013]步骤S,调用存储过程P_GetNewSeqVal_SeqQuickResponseCode得到 "YYYYMM孤"+Sequence值。
[0014] 所述的步骤二是:
[0015] 1.声明新Sequence值变量NewSeqValue;
[0016] 2.插入新值到SeqQuickResponseCode表;
[0017] 3.设置新Sequence值scope_identity0 为插入到SeqQuickResponseCode表的 标识列内的最后一个标识值;
[0018] 4.删除SeqQuickResponseCode表,不显不被锁行;
[0019] 5.返回新Sequence值NewSeqValue。
[0020] 所述的步骤S中,YYYYMMDD"+Sequence指的是如2014112000001的递增字符串; 具体实现方式是:
[0021]调用存储过程P_GetNewSeqVal_SeqQuickResponseCode,使用W下语句,实现 "YYYYMMDD"+Sequence的值;
[002引DeclareiNewSeqVal int
[0023] ExeciNewSeqVal = P_GetNewSeqVal_SeqQuickResponseCode
[0024] PrintiNewSeqVal
[0025] Select Convert(char巧),Getdate0,112) +
[0026] ri曲t (,00000,+CAST (iNewSeqVal AS varchar巧)),5) as mySeq。
[0027] 本发明解决了实现SQL Server中得到Sequence的值(例如;2014112000001)的 格式,并适合于高吞吐量的访问请求,比如每秒数千次的请求。
【附图说明】
[002引下面结合附图对本发明进一步说明:
[0029] 图1是本发明的流程图。
【具体实施方式】
[0030] 如图1所示,本发明的具体步骤为:
[0031]步骤一,创建表SeqQuickResponseCode ;
[0032]
【主权项】
1. 一种在SQL Server中实现Sequence的方法,其特征在于:所述的方法包括如下步 骤: 步骤一,创建表 SeqQuickResponseCode ; 步骤二,创建从SeqQuickResponseCode表获取最新Sequence值的存储过程; 步骤三,调用存储过程 P_GetNewSeqVal_SeqQuickResponseCode 得到 "YYYYMMDD"+Sequence 值。
2. 根据权利2要求所述的在SQL Server中实现Sequence的方法,其特征在于:所述 的步骤二是: (1) 声明新 Sequence 值变量 NewSeqValue ; (2) 插入新值到 SeqQuickResponseCode 表; (3) 设置新 Sequence 值 scope_identity ()为插入到 SeqQuickResponseCode 表的标识 列内的最后一个标识值; (4) 删除SeqQuickResponseCode表,不显示被锁行; (5) 返回新 Sequence 值 NewSeqValue。
3. 根据权利1或2所述的在SQL Server中实现Sequence的方法,其特征在于;所述 的步骤三中,YYYYMMDD"+Sequence指的是如2014112000001的递增字符串;具体实现方式 是: 调用存储过程P_GetNewSeqVal_SeqQuickResponseCode,使用以下语句,实现 "YYYYMMDD"+Sequence 的值; DeclareiNewSeqVal int ExeciNewSeqVal = P_GetNewSeqVal_SeqQuickResponseCode PrintiNewSeqVal Select Convert (char (8),Getdate (), 112)+rightC〇〇〇〇〇' +CAST(?NewSeqVal AS varchar(5)),5)as mySeq〇
【专利摘要】本发明涉及SQL Server数据库技术领域,尤其是一种在SQL Server中实现Sequence的方法。本发明方法的步骤如下:1、创建表SeqQuickResponseCode;2、创建从SeqQuickResponseCode表获取最新Sequence值的存储过程;3、调用存储过程P_GetNewSeqVal_SeqQuickResponseCode得到“YYYYMMDD”+Sequence值。本发明适合于高吞吐量的访问请求;可用于实现SQL Server中得到Sequence的值。
【IPC分类】G06F17-30
【公开号】CN104866571
【申请号】CN201510267111
【发明人】张来卿, 徐震宇, 季统凯
【申请人】国云科技股份有限公司
【公开日】2015年8月26日
【申请日】2015年5月22日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1